私はperlスクリプトの初心者です。ハイフン (-) を使用して範囲を指定することは知っています。
しかし、それが表現の最初に言及されている場合はどうなるでしょうか。
例:
if ($_ =~ /-\n/)
//do something
上記のコードをどのように解釈しますか?
「パラメータが改行の範囲と等しい場合」? (いいえ、それは奇妙な理解です:-/)
助けてください。
[] の外側 - 私の知る限り、「-」を意味し、[] ブロック内の範囲のみを示します。
ここに私が見つけたより完全な答えがあります
ハイフンを正規表現と一致させる方法は? (2番目の答えを見てください)
したがって、式は - の後に改行または - で終わる行が続くものと一致する必要があります。
パターンは、ハイフンと"-"
それに続く改行に一致します\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
'-'
が文字クラスの最初または最後の文字である場合、通常の文字として扱われます。
これの意味は:
ハイフンの直後に改行文字が続く場合、この文字のペアが文字列内のどこにあるかは関係ありません。