首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以用聚乙二醇来表达类似于/\s(foo\baz)\s的东西。

可以用聚乙二醇来表达类似于/\s(foo\baz)\s的东西。
EN

Stack Overflow用户
提问于 2022-03-14 23:02:58
回答 1查看 44关注 0票数 2

/\s(foo|bar|baz)\s.*/这样的正则表达式将匹配以下字符串:

代码语言:javascript
运行
复制
football bartender bazooka baz to the end
                          ^^^^^^^^^^^^^^^

是否有可能制定语法解析表达式,以类似的方式解析字符串,将字符串分成头和尾?

代码语言:javascript
运行
复制
Result <- Head Tail

football bartender bazooka baz to the end
         Head             |    Tail
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-15 16:36:16

是的,使用PEG是可以实现的。下面是一个使用聚乙二醇的示例

代码语言:javascript
运行
复制
start = f:words space r:tail
{
   return [f, r];
}

tail = f:"baz" space r:words
{
   return r;
}

words = f:word r:(space word)*
{
   return [f].concat(r).flat().filter(n => n);
}

word = !tail w:$([A-Za-z]+)
{
   return w;
}

space = " "
{
   return;
}

输出:

代码语言:javascript
运行
复制
[
   [
      "football",
      "bartender",
      "bazooka"
   ],
   [
      "to",
      "the",
      "end"
   ]
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71475119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档