正则表达式找到所有组

时间:2013-11-12 17:51:32

标签: regex

我要解析以下句子:

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

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

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

预期结果组(注意空格): “懒惰” “疯狂的” “懒惰”

Current Regex Groups Result using regex101 PHP

如何修改当前的正则表达式以获取所有预期的组?

3 个答案:

答案 0 :(得分:1)

以下内容应该有效:

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

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

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

答案 1 :(得分:0)

尝试以下正则表达式

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

regex101 demo

答案 2 :(得分:0)

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

   (?<=the)\s?\w*?\s?(?=red dog)