通过java正则表达式否定一组单词

时间:2009-08-26 09:48:50

标签: java regex regex-negation

我想用java regex否定一组单词。

说,我想否定cvssvnnvsmvc。我写了一个正则表达式^[(svn|cvs|nvs|mvc)]

有些看起来似乎没有起作用。

3 个答案:

答案 0 :(得分:43)

试试这个:

^(?!.*(svn|cvs|nvs|mvc)).*$

如果它不包含svn,cvs,nvs或mvc中的一个,则匹配文本。

这是一个类似的问题:C# Regex to match a string that doesn't contain a certain string?

答案 1 :(得分:3)

这不是那么简单。如果你想否定一个单词,你必须将它分成字母并否定每个字母。

所以否定

/svn/

你必须写

/[^s][^v][^n]/

所以你要过滤掉的东西会变成真正丑陋的正则表达式,我认为最好使用这个正则表达式

/svn|cvs|nvs|mvc/

当你对它测试你的字符串时,只是否定结果。

在JS中,这看起来更像是:

!/svn|cvs|nvs|mvc/.test("this is your test string");

答案 2 :(得分:2)

你的正则表达式错了。在方括号之间,您可以将字符设置为要求或忽略。如果您没有找到^(svn|cvs|nvs|mvc)$,那就没事了。