0%

linux, php, perl, python, java, C++, .net等都支持正则表达式,需要注意的是许多引擎很类似,但不完全一样,支持的正则表达式语法可能有细微的差别。有两种类型的引擎:文本导向(text-directed)的引擎和正则导向(regex-directed)的引擎。一些非常有用的特性,如“惰性”量词(lazy quantifiers)和反向引用(backreferences),只能在正则导向的引擎中实现,因此正则导向的引擎是目前最流行的引擎。

你可以轻易分辨出所使用的引擎是文本导向还是正则导向可以做相应分辨。如果反向引用或“惰性”量词被实现,则可以肯定使用的引擎是正则导向的。作如下测试:将正则表达式regex|regex not应用到字符串“regex not”, 如果匹配的结果是regex, 则引擎是正则导向的, 如果结果是regex not,则是文本导向的。因为正则导向的引擎会报告它找到的第一个匹配。正则导向的引擎总是返回最左边的匹配, 即使以后有可能发现一个“更好”的匹配,正则导向的引擎也总是返回最左边的匹配