文字列を一致させa
たいのですが、キャプチャ パターンをb
.
私が簡単にできるようにa
名前付きをキャプチャするには:id
(?<id>a)
しかし、元の文字列がちょうどだったときにid
なりたいです。つまり、元の文字列にない文字をキャプチャしたいのです。b
a
たとえば、PHP では次のようになります。
preg_match('/your_magic/', 'a', $matches);
print $matches['id'] == 'b'; // true
文字列を一致させa
たいのですが、キャプチャ パターンをb
.
私が簡単にできるようにa
名前付きをキャプチャするには:id
(?<id>a)
しかし、元の文字列がちょうどだったときにid
なりたいです。つまり、元の文字列にない文字をキャプチャしたいのです。b
a
たとえば、PHP では次のようになります。
preg_match('/your_magic/', 'a', $matches);
print $matches['id'] == 'b'; // true
入力文字列に含まれていないキャプチャ グループに何かを取得する方法はありません。キャプチャ グループは、(少なくとも Perl では) 元の入力文字列の開始/終了位置として部分的に表されます。
キャプチャ グループに取得させたい値が入力文字列にある場合は、ルックアラウンドを使用してそれを行うことができます。正規表現フレーバーの後読みが制限されている場合 (PHP など)、目的の文字列は一致の後にある必要があります。
例えば:
preg_match('/a(?=.*(?<id>b))/', 'a foo b', $matches);
print "matched '$matches[0]', id is '$matches[id]'";
出力:
matched 'a', id is 'b'