0

多数の正規表現を1つに凝縮できるかどうかを調べようとしていますが、そこに到達することはできません。

一致する文字のペアを探しています。これは、範囲内の1つである可能性があります。

例えば

1 text 1     <--- This is a match
1 text 2     <--- This is not a match
2 text 1     <--- This is a match

オプションのリストは有限であるため、各ケースを個別にテストできることはわかっています。例:

1(.+?)1
2(.+?)2

ただし、1つのクエリでこれを行うためにグループ化を使用しようとしていました。次のようなもの:

[1-8](.+?)[1-8]

しかし、これは(誤って)一致します:

1 text 2     <--- This is not a match

2番目の括弧で囲まれたリストの一致が最初の括弧の一致と同じであることを確認する方法はありますか?つまり、最初が1と一致する場合、2番目も1でなければなりませんか?

4

2 に答える 2

3

グループを使用してから、そのグループを参照する必要があります

([1-8])(?:.+?)\1

\1firstキャプチャされたグループを参照します。([1-8])

于 2012-11-23T13:51:27.230 に答える
2

バックリファレンスを使用したい

([1-8])(.+?)\1

そうすれば、すべてが一致したと見なされるためには、前と後ろの文字が一致する必要があります。

于 2012-11-23T13:55:06.510 に答える