通过java正则表达式对一组单词求反
我想用java正则表达式否定一组单词 比如说,我想否定通过java正则表达式对一组单词求反,java,regex,regex-negation,Java,Regex,Regex Negation,我想用java正则表达式否定一组单词 比如说,我想否定cvs,svn,nvs,mvc。我写了一个正则表达式,它是^[(svn | cvs | nvs | mvc)] 有些人认为这似乎不起作用。并不是那么简单。如果你想否定一个单词,你必须把它分成几个字母,然后否定每个字母 所以要否定 /svn/ 你必须写作 /[^s][^v][^n]/ 所以你想要过滤掉的东西会变成非常难看的正则表达式,我认为最好使用这个正则表达式 /svn|cvs|nvs|mvc/ 当你用它来测试你的字符串时,只需否定结果
cvs
,svn
,nvs
,mvc
。我写了一个正则表达式,它是^[(svn | cvs | nvs | mvc)]
有些人认为这似乎不起作用。并不是那么简单。如果你想否定一个单词,你必须把它分成几个字母,然后否定每个字母 所以要否定
/svn/
你必须写作
/[^s][^v][^n]/
所以你想要过滤掉的东西会变成非常难看的正则表达式,我认为最好使用这个正则表达式
/svn|cvs|nvs|mvc/
当你用它来测试你的字符串时,只需否定结果
在JS中,这看起来不太像:
!/svn|cvs|nvs|mvc/.test("this is your test string");
你的正则表达式错了。在方括号之间,可以放置需要或忽略的字符。如果您没有找到
^(svn | cvs | nvs | mvc)$
,您就没事了。试试以下方法:
^(?!.*(svn|cvs|nvs|mvc)).*$
如果它不包含svn、cvs、nvs或mvc中的任何一个,那么它将匹配文本
这是一个类似的问题:这可能是不正确的,因为您不匹配字符串的开头“^”和结尾$。嗯,我正在搜索测试字符串中任何位置上的任何单词。如果你只想匹配整个单词,那么在开始处^和结尾处$就可以了。可能的重复:另请参见:……这种问题经常出现,因此我认为它值得一个标签。我添加了一个名为“regex否定”的函数,这实际上没有帮助,因为这不是纯粹的regex函数。如果您不必选择更改代码,这将无法解决QAs问题。