21

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

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

有些似乎不起作用。

4

3 回答 3

49

试试这个:

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

如果它不包含 svn、cvs、nvs 或 mvc 之一,这将匹配文本。

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

于 2009-08-26T10:37:37.120 回答
2

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

所以要否定

/svn/

你必须写

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

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

/svn|cvs|nvs|mvc/

当您针对它测试您的字符串时,只需否定结果。

在 JS 中,这看起来更像:

!/svn|cvs|nvs|mvc/.test("this is your test string");
于 2009-08-26T09:56:00.963 回答
2

你的正则表达式是错误的。在方括号之间,您可以放置​​需要或忽略的字符。如果你没有找到^(svn|cvs|nvs|mvc)$,你很好。

于 2009-08-26T09:56:25.957 回答