是否存在正则表达式的公共/标准子集?

时间:2011-04-26 21:16:40

标签: c# java ruby regex

正则表达式中使用的“控制字符”在正则表达式解析器的不同实现之间有很大差异(例如,Ruby,Java,C#,sed等中的正则表达式)。

例如,在Ruby中,\D表示not a digit;它在Java,C#和sed中是否意味着相同? 我想我要问的是,所有正则表达式解析器都支持正则表达式的“标准”吗?

如果没有,是否应该学习和掌握一些共同的子集(然后在遇到它们时学习解析器特定的子集)?

2 个答案:

答案 0 :(得分:8)

请参阅regular-expressions.info上的基本语法列表。

a comparison不同的“味道”。

答案 1 :(得分:1)

有一个非常简单的共同核心。它对应于原始软件工具(如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括号表达式,因为没有人使用它们而且它们不在子集中。除经典表达式外,parens默认为magic。功能