Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java正则表达式对一组单词求反_Java_Regex_Regex Negation - Fatal编程技术网

通过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/ 当你用它来测试你的字符串时,只需否定结果

我想用java正则表达式否定一组单词

比如说,我想否定
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问题。