0

解析したい次の文があります。

速い茶色の犬が怠惰な赤い犬を飛び越えると、クレイジーな赤い犬が怠惰な赤い犬を通り過ぎます。

「the」と「red dog」の間に出現するすべての文字を検索したいと考えています。現在の正規表現:

.*the(.*?)red dog.*

期待される結果グループ (スペースに注意してください): " lazy " " crazy " " lazy "

regex101 PHP を使用した現在の正規表現グループの結果

現在の正規表現を変更して、予想されるすべてのグループを取得するにはどうすればよいですか?

4

3 に答える 3

1

以下が機能するはずです。

\bthe\b((?:(?!\bthe\b).)*?)\bred dog\b

単語の境界は、"the" の代わりに "then" のようなものに一致することを防ぎます。the は、一致を開始できる "red dog" の近くに "the" がないことを確認するため(.*?)に置き換えられました。((?:(?!\bthe\b).)*?)

例: http://regex101.com/r/jU6cO9

于 2013-11-12T17:56:46.790 に答える
0

編集:次の正規表現を検討してください...

   (?<=the)\s?\w*?\s?(?=red dog)
于 2013-11-12T17:57:22.727 に答える