如何构建一个匹配到某个单词的正则表达式?

时间:2014-05-07 16:18:57

标签: regex

我有以下文字:

i like kittens dfhgfhfgjhgjgh and dogs

我希望正则表达式匹配:

kittens dfhgfhfgjhgjgh and 

在单词dog之前可以有很多单词,所以我想使用看起来像这样的正则表达式:

string myRegex = kittens[^(dogs)]  // match from kittens until you get to the word dogs

但是我找不到任何办法,当他点击字母d时,他会停止匹配。

enter image description here

1 个答案:

答案 0 :(得分:6)

我认为你想要一个更像这样的正则表达式:

kittens.*?(?=dogs)

.*?以非贪婪方式匹配0个或多个字符,而(?=dogs)表示您的匹配后应跟dogs一词。

或者,如果你想确保字符dogs包含一个单词本身(并且不是复合单词的一部分),请考虑以下模式(如Sam所指出的那样) :

kittens.*?(?=\bdogs\b)

\b表示单词边界。

您的问题表明总会有dogs。但如果没有,请考虑使用以下正则表达式(它会找到跟随小猫但不包含狗的匹配),正如Justin Wood所指出的那样:

kittens.*?(?=\bdogs\b|$)

$表示字符串的结尾。

所有情况下的输出都是:

kittens dfhgfhfgjhgjgh and