首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex如何忽略multiple ( )?

Regex如何忽略multiple ( )?
EN

Stack Overflow用户
提问于 2018-11-14 20:18:22
回答 1查看 192关注 0票数 1

我使用这个regex字符串:

代码语言:javascript
复制
/rfi .*?(.*) .*?\((.*)\)/i

组1查找rfi编号& Group 2返回( )中的内容。用测试线:“新RFI 087 (播种机的混凝土梁)”一切正常工作,但测试字符串“新RFI 087 (混凝土(梁)在播种机)”它崩溃。

是否可以在()内搜索,但忽略其中的multiple ()?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 20:40:52

您可以通过使您的组1模式懒惰来匹配您的字符串。另外,第一个.*?是多余的,删除它。

使用

代码语言:javascript
复制
/rfi (.*?) .*?\((.*)\)/i

regex演示

@sln建议使用带有子程序的regex,但这些特性在regex引擎中并不十分流行,例如Ruby或PCRE支持它们。

代码语言:javascript
复制
/rfi (.*?) .*?(\((?:[^()]++|(?2))*\))/i

或者更多的“交叉库”(因为Onigmo支持\g<X>递归构造,与PCRE一样)

代码语言:javascript
复制
/rfi (.*?) .*?(\((?:[^()]++|\g<2>)*\))/i

这个演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53308134

复制
相关文章

相似问题

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