2010-04-07 58 views
6

具體來說,我使用Linux命令:Perl使用哪種POSIX正則表達式?

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

我只是想確保我使用POSIX類型Perl使用的類型,因爲這是迄今爲止一個我最熟悉的。

+1

Perl已經定義了許多POSIX正則表達式的擴展(即它根本不是POSIX)。我不認爲有POSIX等價物。你想使用什麼特定的正則表達式功能? – Cameron 2010-04-07 16:21:23

+1

這裏的區別是\ {和\\)等的語法。擴展的posix是你需要的。 – 2010-04-07 16:24:54

+0

這就像問悍馬是什麼樣的摩托車。儘管它們執行類似的功能,但它們是完全不同的東西。 – jpaugh 2017-09-26 18:59:16

回答

1

Perl的正則表達式更像Posix擴展的正則表達式。基本POSIX正則表達式中使用({以匹配實際的字符,\(\{爲特殊字符,但POSIX擴展那些使用({爲相同的含義Perl和\(\{以匹配實際的字符,相同作爲Perl。所以posix-extended就是你想要的。

8

Perl的正則表達式引擎是Perl的正則表達式引擎。 perl定義了Perl。

有關詳情,請參閱perldoc perlreref

5

Perl使用Perl正則表達式,而不是POSIX。您可以自己比較語法,例如在regex(7)中。

9

Perl爲regexes定義了自己的標準。例如,有一些系統,如PCRE,代表Perl兼容正則表達式。

+4

或Perl兼容的正則表達式,對吧? – Cameron 2010-04-07 16:24:16

+3

+1,但請注意PCRE不完全兼容Perl。 – 2010-04-07 16:25:02

+2

*名稱具有誤導性,因爲PCRE只有在考慮PCRE的一部分設置和Perl正則表達式工具的子集時才兼容Perl * http://en.wikipedia.org/wiki/PCRE – 2010-04-07 16:25:45

4

per perldoc perlhist,Perl 0(「Classified。Do not ask。」)使用了基本的正則表達式。所有版本自1987年12月以Perl 1.000開始,已經使用了擴展的正則表達式(並擴展了這些...)。