Ответ 1
Попробуйте следующее:
^(?!.*(svn|cvs|nvs|mvc)).*$
это будет соответствовать тексту, если он не содержит один из svn, cvs, nvs или mvc.
Это аналогичный вопрос: С# Regex соответствует строке, которая не содержит определенную строку?
Я хотел бы отменить набор слов, используя java regex.
Скажем, я хочу отрицать cvs
, svn
, nvs
, mvc
. Я написал регулярное выражение, которое ^[(svn|cvs|nvs|mvc)]
.
Некоторые из них, похоже, не работают.
Попробуйте следующее:
^(?!.*(svn|cvs|nvs|mvc)).*$
это будет соответствовать тексту, если он не содержит один из svn, cvs, nvs или mvc.
Это аналогичный вопрос: С# Regex соответствует строке, которая не содержит определенную строку?
Это не так просто. Если вы хотите отменить слово, вы должны разделить его на буквы и отрицать каждую букву.
чтобы отрицать
/svn/
вам нужно написать
/[^s][^v][^n]/
Итак, то, что вы хотите отфильтровать, превратится в действительно уродливое регулярное выражение, и я думаю, что лучше использовать это регулярное выражение
/svn|cvs|nvs|mvc/
и когда вы проверяете свою строку против него, просто отрицайте результат.
В JS это выглядело бы гораздо меньше:
!/svn|cvs|nvs|mvc/.test("this is your test string");
Ваше регулярное выражение неверно. Между квадратными скобками вы можете поместить символы, требующие или игнорировать. Если вы не найдете ^(svn|cvs|nvs|mvc)$
, вы в порядке.