是否有正则表达式的通用/标准子集?

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 括号表达式,因为没有人使用它们并且它们不在子集中。除了经典表达式,括号默认是魔法。

【讨论】:

以上是关于是否有正则表达式的通用/标准子集?的主要内容,如果未能解决你的问题,请参考以下文章

shell中的正则表达式

条件正则表达式,如何提取匹配的子集?

是否有任何正则表达式可以查找本地化字符串,例如 en_US(或通用 xx_YY)? [关闭]

常用正则表达式—邮箱(Email)

通过正则表达式将熊猫列替换为自身的一个子集

正则表达式说明