正则表达式与单词列表不匹配
我需要一个正则表达式来匹配不在特定列表中的单词。
这是为我没有做的系统,但我需要用于过滤。 显然它根据给定的正则表达式过滤字段,这些字段只包含一个字。 所以我想要全字匹配。
例如,我想要除番茄或土豆之外的任何词,我的正则表达式到目前为止:
^(?!(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