首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以安全地一直使用扩展正则表达式而不是basic吗?

我可以安全地一直使用扩展正则表达式而不是basic吗?
EN

Stack Overflow用户
提问于 2010-04-18 07:42:27
回答 3查看 311关注 0票数 1

似乎大多数现代语言和工具都允许使用扩展正则表达式,并且ERE看起来比使用所有这些反斜杠的BRE要干净得多。当使用ERE而不是BRE时,在兼容性或可维护性方面有什么主要缺点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-18 15:57:20

我不认为"BRE和ERE“是一个非常有用的区别。仍然有许多基于ERE的工具,如awk和gnu grep,以及MySQL和Oracle等数据库中的正则表达式支持,但BRE实际上是一个脚注。

此外,就特性而言,大多数现代编程语言中内置的regex风格远远超出了ERE。即使是功能最弱的JavaScript,也支持非捕获组、不情愿的量词和lookaheads。将正则表达式的风格归类为"ERE和ECMA+“可能会更有帮助,但还有更多的原因。

如果您在Tcl中编程,您将使用\y\m来匹配单词边界;在JavaScript中,您将学会喜欢[\s\S],因为没有点匹配-换行符模式;在Visual Studio中,您将使用@#而不是*?+?来进行最小匹配。而且,尽管Java具有完全现代的regex风格,但它没有regex字面量和原始/字面量/逐字字符串表示法,因此您无论如何都看不到所有的反斜杠。

在实践中,这并不是你必须做出的选择。一旦确定了要使用的工具,就可以使用它所需的任何regex风格。

参考:Flavor comparison chart

票数 0
EN

Stack Overflow用户

发布于 2010-04-18 07:48:23

兼容性有明显的缺点,但这显然不会影响您编写的新正则表达式。我总是使用扩展的正则表达式。事实上,这是目前大多数regex库的默认设置,所以请顺其自然。

票数 1
EN

Stack Overflow用户

发布于 2010-04-18 10:20:52

这取决于您的环境和受众。

BRE正变得越来越罕见,我认为在这一点上,更多的工具可能比BRE支持更多。甚至grep (GNU变体)现在也是默认的。

大多数所谓的“BRE”实际上并不是BRE。如果你有这些函数中的任何一个作为元字符:| + ?,那么你的BRE实际上是有BRE转义的。

我认为BRE是一个例外,除非您的环境中有需要,否则应该避免使用它。

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

https://stackoverflow.com/questions/2660521

复制
相关文章

相似问题

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