Отрицание набора слов через java regex

Я хотел бы отменить набор слов, используя java regex.

Скажем, я хочу отрицать cvs, svn, nvs, mvc. Я написал регулярное выражение, которое ^[(svn|cvs|nvs|mvc)].

Некоторые из них, похоже, не работают.

Ответы

Ответ 2

Это не так просто. Если вы хотите отменить слово, вы должны разделить его на буквы и отрицать каждую букву.

чтобы отрицать

/svn/

вам нужно написать

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

Итак, то, что вы хотите отфильтровать, превратится в действительно уродливое регулярное выражение, и я думаю, что лучше использовать это регулярное выражение

/svn|cvs|nvs|mvc/

и когда вы проверяете свою строку против него, просто отрицайте результат.

В JS это выглядело бы гораздо меньше:

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

Ответ 3

Ваше регулярное выражение неверно. Между квадратными скобками вы можете поместить символы, требующие или игнорировать. Если вы не найдете ^(svn|cvs|nvs|mvc)$, вы в порядке.