2014-02-27 30 views
1

我想创建一个正则表达式,只返回一个字如果它包含一个字符串并排除另一个字符串。例如,如果我在查找单词“want”而不是“dontwant”,它会找到word_want_other单词,但找不到单词word_want_other_dontwant创建正则表达式来查找整个单词只有包含一个字符串并排除其他

目前,我试图让它与负向预测(见下文)一起工作,但是这会一直寻找带有“默认”的单词。

.*want.*(?!dontwant).* 

Regular expression visualization

Debuggex Demo

+0

你想排除整个行,如果它有'dontwant'? – hwnd

+0

正确。排除包含“dontwant”的任何行。 – AberrantWolf

+1

如果是这种情况,请使用'^(?:(?! dontwant)。)* $'或者如果您仍想确保该行包含“want”而不是“dontwant”,则可以使用以下内容:' ^(?=。*想要)(?:(?!dontwant)。)* $''' – hwnd

回答

1

这工作:

(?=.*want)(?!.*dontwant).*

它查找任何字符串,该行的开头包含want且不含dontwant后,如果满足所有这些,它将返回整个行。

我不完全确定为什么最初的想法不起作用,因为有一些工作,我试图回去找到中间的东西。对不起,没有更好的解释之前发生了什么问题。

相关问题