2016-09-05 8 views
1
/AA[.<]$]ER/ 

オンラインでいくつかの正規表現パターンを実行しているが、これを打破することはできませんでした。このパール正規表現でドル記号は何を指していますか

私は当初は通常のEOSと思っていましたが、それらの追加文字は意味をなさないものです。 何か助けていただければ幸いです。

+0

マルチラインフラグは有効でしたか? – dorukayhan

+0

いいえ、有効になっていませんでした。 – phunchik

+0

FWIWのような正規表現は、 '/ x'と中カッコでより読みやすくなります。 'm {AA [。<] $] ER} x' – Schwern

答えて

4

これは著者の間違いかもしれませんが、$]はここでは特別な変数として扱われます。具体的には、これは変数$OLD_PERL_VERSIONのエイリアスであり、数字としてエンコードされたperlのバージョンを含んでいます。私のシステムで5.020002(バージョン番号5.20.2に対応)。その値は正規表現に挿入され、文字通り一致します。例えば、私のシステムでは、上記の正規表現は、部分文字列AA.5.020002ERまたはAA<5.020002ERを含む文字列とのみ首尾よく一致します。

+0

' $ OLD_PERL_VERSION'はちょっと混乱しています。私はそれが現れた時は確かではないが、明らかに[文書化されているが5.20まで存在しなかった](http://perldoc.perl.org/5.20.0/perldelta.html)。それは[5.24]で落胆しています(http://perldoc.perl.org/perldelta.html#Documentation)。私はそれが決して存在しないふりをすることをお勧めしたい。 – Schwern

2

$]は、Perlのバージョン番号を返す特別な変数です。特殊変数は正規表現でも使用できます。

関連する問題