Perl使用哪种POSIX风格的正则表达式?

9

具体来说,我正在使用Linux命令:

$ find . -regextype posix-extended -regex '<some regex>' ...

我只想确保我使用的POSIX类型与Perl使用的类型相同,因为那是我最熟悉的类型。


1
Perl已经定义了许多扩展到POSIX正则表达式(即它根本不是POSIX)。我认为没有POSIX等效物。您想使用哪些特定的正则表达式功能? - Cameron
2
这里的区别在于{和\)等语法。扩展的posix是你需要的。 - user181548
这就像问一辆悍马是什么样的摩托车。它们是非常不同的东西,尽管它们执行类似的功能。 - jpaugh
5个回答

12

Perl已经为正则表达式定义了自己的标准。例如,有一些系统,如PCRE,它代表的是Perl兼容正则表达式。


4
+1,需要注意的是PCRE并非完全兼容Perl。 - Josh Kelley
3
这个名称有误导性,因为只有当你考虑PCRE的某些设置和Perl正则表达式工具的某些子集时,PCRE才与Perl兼容。 - Sinan Ünür
4
已修复 - 如果你们能编辑一下的话,我不会感到冒犯。 :) - Paul Nathan

10

Perl 的正则表达式引擎就是 Perl 的正则表达式引擎。 perl 定义了 Perl。

详情请参见 perldoc perlreref


7

Perl使用Perl正则表达式,而非POSIX正则表达式。您可以自己比较语法,例如在regex(7)中。


6
根据perldoc perlhist,Perl 0(“保密。不要问。”)使用基本正则表达式。从1987年12月开始的Perl 1.000以及之后的所有版本都使用扩展正则表达式(并在此基础上进行扩展...)。

4
Perl的正则表达式更像是Posix扩展的。基本的posix正则表达式使用({来匹配实际字符,而\(\{则作为特殊字符,但是Posix扩展的正则表达式使用({与Perl中的意义相同,并使用\(\{来匹配实际字符,与Perl一样。因此,您需要使用posix-extended。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接