我有以下文字:
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时,他会停止匹配。
答案 0 :(得分:6)
我认为你想要一个更像这样的正则表达式:
kittens.*?(?=dogs)
.*?
以非贪婪方式匹配0个或多个字符,而(?=dogs)
表示您的匹配后应跟dogs
一词。
或者,如果你想确保字符dogs
包含一个单词本身(并且不是复合单词的一部分),请考虑以下模式(如Sam所指出的那样) :
kittens.*?(?=\bdogs\b)
\b
表示单词边界。
您的问题表明总会有dogs
。但如果没有,请考虑使用以下正则表达式(它会找到跟随小猫但不包含狗的匹配),正如Justin Wood所指出的那样:
kittens.*?(?=\bdogs\b|$)
$
表示字符串的结尾。
所有情况下的输出都是:
kittens dfhgfhfgjhgjgh and