正则表达式与单词列表不匹配

我需要一个正则表达式来匹配不在特定列表中的单词。

这是为我没有做的系统,但我需要用于过滤。 显然它根据给定的正则表达式过滤字段,这些字段只包含一个字。 所以我想要全字匹配。

例如,我想要除番茄或土豆之外的任何词,我的正则表达式到目前为止:

^(?!(Potato|Tomato))

我正在测试我的正则表达式。 当我输入土豆时,我得到:

您的模式与主题字符串不匹配。

这是我期待的结果,但每当我输入番茄和土豆以外的任何东西,比如“巧克力”,我就会得到:

没有匹配组被提取。

这意味着你的模式匹配,但它没有(捕获(组)),它匹配主题字符串中的任何内容。

我试着改变我的表情:

([[:alnum:]])*^(?!(Potato|Tomato))

意思是,我想要除字母“Tomato”和“Potato”之外的任何字母数字字符组合,但是我得到相同的结果。

我不知道如何改变我的正则表达式,所以它有一个捕获组,它匹配我所需要的。


您正在使用的正则表达式

^(?!(Potato|Tomato))

这个正则表达式的意思是“在匹配开头的零长度字符串,而不是跟随'土豆'或'番茄'”

您正在使用的正则表达式是负向预测。 参考:此外,它并没有捕获任何东西,因为这个正则表达式中唯一的捕获组只能匹配你禁止的“土豆”或“番茄”。

捕获组由圆括号定义,但如果有“?” 在左边的圆形支架前,它不被视为一个捕获组。

如果您想在上述正则表达式中使用捕获组,请使用以下命令:

^((?!(Potato|Tomato)))

现在,如果你用字符串“bracket”来测试这个正则表达式,你会在[0-0]处得到一个0长度的匹配。

你正在寻找的正则表达式是:

^(?!(Potato|Tomato)$)(w*)

你的正则表达式是一个零长度的正则表达式。 试试这个: ^(?!(Potato|Tomato))w* 。 这将匹配巧克力。 如果你想捕捉巧克力,那么做到这一点: ^(?!(Potato|Tomato))(w*)

演示

链接地址: http://www.djcxy.com/p/2161.html

上一篇: Regular expression for word that doesn't match a list of words

下一篇: match the Nth word of a line containing a specific word