\b
は
(?:(?<!\w)(?=\w)|(?<=\w)(?!\w))
の略です。
(?:(?<![\w~])(?=[\w~])|(?<=[\w~])(?![\w~]))
使用例:
my $word_char = qr/[\w~]/;
my $boundary = qr/(?<!$word_char)(?=$word_char)
|(?<=$word_char)(?!$word_char)/x;
$key =~ /$boundary$match$boundary/
我々は$match
だけ始まり、$word_char
で終わるものを一致させることができ、次のように、私たちが簡素化することができます知っている場合:
my $word_char = qr/[\w~]/;
my $start_bound = qr/(?<!$word_char)/;
my $end_bound = qr/(?!$word_char)/;
$key =~ /$start_bound$match$end_bound/
これは十分に簡単です私たちはインラインでできる。
あなたは、単に
$match
の文字列がないことを確認し、この
$key =~ /(?<![~\w])$match(?![~\w])/
を書くことができます(すなわち、それは常に有効な識別子を含む)あなたは$match
の内容を確認する必要はありませんと仮定すると、
$key =~ /(?<![\w~])$match(?![\w~])/
あなたがマッチさせたいものを正確に投稿することができます。文字列が何であるかを仮定するだけでなく、正規表現が特定のケースに対して生成されます。 –
'/〜\ b $ match \ b/'は'〜Query'にマッチするはずです。 '$ match'に含まれている正規表現は' Query'とマッチします。 (私はちょうどテストし、 '"〜foo "=〜/〜\ bfoo \ b /'は真と評価します) – cdhowie
$一致変数は〜クエリ、クエリ、またはpのような単一の文字を含むかもしれません。他の奇妙な名前の開発者がクラスメソッドに使用する可能性があります。正規表現は検索を行っているサブルーチンの一部です。 $ matchに〜Queryが含まれている場合を除き、すべて正常に動作します。 –