1

n番目の一致に一致するために正規表現のみを使用することは可能ですか(追加のコードはありません!)?例えば:

「車」-「電車」-「ボート」-「自転車」

BOATのみを照合したいので、照合の正規表現は「[AZ] +」になりますが、これは1番目、2番目、4番目にも一致します。

誰かがこれのための純粋な正規表現ソリューションを持っていますか?正規表現を使用するコードを変更できないため、これが必要ですが、正規表現を提供することはできます。

よろしく、ロビン

4

3 に答える 3

5

私はこの後ろ向きがそれをするべきだと思います:

(?<=^("[A-Z]+"[\s-]+){2})"[A-Z]+"

文字列の開始から2単語後に続く単語と一致します

ここに画像の説明を入力してください

于 2012-09-25T15:47:49.840 に答える
0

私があなたを正しく理解していて、複数の文字列を1つの正規表現に文字列ごとに入れている場合は、いいえ、これは不可能です。

正規表現自体には、一致時間より長く続くメモリがないため、あるものを一致させ、その後に別のものを一致させる場合、最初の情報はありません。

于 2012-09-25T15:47:03.657 に答える
0

(?!(\ "[AZ] \" \ s- \ s){2})(\ "[AZ] \")-ここで、{2}は必要なインデックスを意味します。

唯一の問題は、指定されたインデックスの後のすべての一致も返すことです。マッチを実行して、最初の結果を返すことができます。

あなたの例でregexpalを使用してそれをテストしました。

于 2012-09-25T16:11:33.637 に答える