0

我有以下要解析的句子:

如果快速的棕色狗跳过懒惰的红狗,那么疯狂的红狗会跑过懒惰的红狗。

我想找到“the”和“red dog”之间所有出现的字符。当前正则表达式:

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

预期结果组(注意空格):“lazy”“crazy”“lazy”

当前正则表达式组结果使用 regex101 PHP

我将如何修改我当前的正则表达式来获得我所有的预期组?

4

3 回答 3

1

以下应该有效:

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

单词边界阻止您匹配诸如“then”而不是“the”之类的内容,the(.*?)已被替换((?:(?!\bthe\b).)*?)为以确保没有“the”更接近我们可以开始匹配的“red dog”。

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

于 2013-11-12T17:56:46.790 回答
0

尝试以下正则表达式

the(\s+\S+\s+)red dog

正则表达式101演示

于 2013-11-12T17:55:38.113 回答
0

编辑:考虑以下正则表达式...

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