2011-04-26 58 views
8

正则表达式中使用的“控制字符”在正则表达式解析器的不同实现(例如Ruby,Java,C#,sed等中的正则表达式)中有很大差异。是否有正则表达式的共同/标准子集?

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

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

+0

我认为POSIX的正则表达式http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions是标准的,不同的实现以它为中心,有一些变化。 – sawa 2011-04-26 21:40:37

回答

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默认为魔术。