Negating a set of words via java regex
Solution 1
Try this:
^(?!.*(svn|cvs|nvs|mvc)).*$
this will match text if it doesn't contain one of svn, cvs, nvs or mvc.
This is a similar question: C# Regex to match a string that doesn't contain a certain string?
Solution 2
It's not that simple. If you want to negate a word you have to split it to letters and negate each letter.
so to negate
/svn/
you have to write
/[^s][^v][^n]/
So what you want to filter out will turn into really ugly regex and I think it's better idea to use this regex
/svn|cvs|nvs|mvc/
and when you test your string against it, just negate the result.
In JS this would look more less like that:
!/svn|cvs|nvs|mvc/.test("this is your test string");
Solution 3
Your regex is wrong. Between square brackets, you can put characters to require or to ignore. If you don't find ^(svn|cvs|nvs|mvc)$
, you're fine.
Abhishek
Updated on June 03, 2020Comments
-
Abhishek almost 4 years
I would like to negate a set of words using java regex.
Say, I want to negate
cvs
,svn
,nvs
,mvc
. I wrote a regex which is^[(svn|cvs|nvs|mvc)]
.Some how that seems not to be working.
-
pvoosten over 14 yearsthat's probably not correct, because you don't match the beginning ^ and the end $ of the string
-
RaYell over 14 yearsWell, I'm searching for any of the words on any position in a test string. If you want to match only the whole words then ^ at the beginning and $ at the end will do the trick.
-
Alexander Oh over 8 yearsthat actually not helpful as this is not purely regex. if you don't have to option to change code, this won't solve the QAs issue.