5

私はperlスクリプトの初心者です。ハイフン (-) を使用して範囲を指定することは知っています。

しかし、それが表現の最初に言及されている場合はどうなるでしょうか。

例:

if ($_ =~ /-\n/)
//do something

上記のコードをどのように解釈しますか?

「パラメータが改行の範囲と等しい場合」? (いいえ、それは奇妙な理解です:-/)

助けてください。

4

3 に答える 3

7

[] の外側 - 私の知る限り、「-」を意味し、[] ブロック内の範囲のみを示します。

ここに私が見つけたより完全な答えがあります

ハイフンを正規表現と一致させる方法は? (2番目の答えを見てください)

したがって、式は - の後に改行または - で終わる行が続くものと一致する必要があります。

于 2012-10-11T06:22:34.847 に答える
5

パターンは、ハイフンと"-"それに続く改行に一致します\n

で説明されているように、ハイフンは文字クラス内の範囲演算子として扱われますperldoc perlrequick

特殊文字'-'は、文字クラス内で範囲演算子として機能するため、扱いにくい[0123456789]and[abc...xyz]が滑らかな[0-9]and になり[a-z]ます。

/item[0-9]/;  # matches 'item0' or ... or 'item9'
/[0-9a-fA-F]/;  # matches a hexadecimal digit

'-'が文字クラスの最初または最後の文字である場合、通常の文字として扱われます。

于 2012-10-11T06:27:35.480 に答える
4

これの意味は:

ハイフンの直後に改行文字が続く場合、この文字のペアが文字列内のどこにあるかは関係ありません。

于 2012-10-11T06:24:49.737 に答える