1

文字列を一致させaたいのですが、キャプチャ パターンをb.

私が簡単にできるようにa名前付きをキャプチャするには:id

(?<id>a)

しかし、元の文字列がちょうどだったときにidなりたいです。つまり、元の文字列にない文字をキャプチャしたいのです。ba

たとえば、PHP では次のようになります。

preg_match('/your_magic/', 'a', $matches);
print $matches['id'] == 'b'; // true
4

1 に答える 1

0

入力文字列に含まれていないキャプチャ グループに何かを取得する方法はありません。キャプチャ グループは、(少なくとも Perl では) 元の入力文字列の開始/終了位置として部分的に表されます。

キャプチャ グループに取得させたい値が入力文字列にある場合は、ルックアラウンドを使用してそれを行うことができます。正規表現フレーバーの後読みが制限されている場合 (PHP など)、目的の文字列は一致の後にある必要があります。

例えば:

preg_match('/a(?=.*(?<id>b))/', 'a foo b', $matches);
print "matched '$matches[0]', id is '$matches[id]'";

出力:

matched 'a', id is 'b'
于 2013-08-05T23:05:42.143 に答える