是否有正则表达式的通用/标准子集?
Posted
技术标签:
【中文标题】是否有正则表达式的通用/标准子集?【英文标题】:Is there a common/standard subset of Regular Expressions? 【发布时间】:2011-08-13 09:14:29 【问题描述】:正则表达式中使用的“控制字符”在正则表达式解析器的不同实现中是否存在很大差异(例如,Ruby、Java、C#、sed 等中的正则表达式)。
例如,在 Ruby 中,\D
表示 not a digit
;它在 Java、C# 和 sed 中的含义相同吗?
我想我要问的是,是否有所有正则表达式解析器都支持的正则表达式的“标准”?
如果没有,是否有一些应该学习和掌握的公共子集(然后在遇到特定解析器时学习它们)?
【问题讨论】:
我认为 POSIX 正则表达式 en.wikipedia.org/wiki/… 是标准,不同的实现围绕它进行,有一些变化。 【参考方案1】:请参阅regular-expressions.info 上的基本语法列表。
和a comparison的不同“风味”。
【讨论】:
感谢您的链接,这将是我数周的阅读材料!比较表很棒。【参考方案2】:有一个非常简单的通用核心。它对应于在 ed、grep、sed 和 awk 等原始软件工具中实现的正则表达式。这是值得学习的,因为其他格式都是这个的超集。†
. match any character
[abc] match a, b, or c
[^abc] match a character other than a, b, or c
[a-c] match the range from a to c
^ match the begininning of the line
$ match the end of the line
* match zero or more of the preceding character
\(...\) group for use as a back-reference
† 我省略了 Posix 括号表达式,因为没有人使用它们并且它们不在子集中。除了经典表达式,括号默认是魔法。
【讨论】:
以上是关于是否有正则表达式的通用/标准子集?的主要内容,如果未能解决你的问题,请参考以下文章