Отрицание ряда слов через Java regex

Я полагаю, что надлежащим способом сделать это является < идентификатор = "один">

19
задан Karl Richter 2 June 2015 в 18:20
поделиться

3 ответа

Попробуйте следующее:

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

это будет соответствовать тексту, если он не содержит один из svn, cvs, nvs или mvc.

Это аналогичный вопрос: C # Regex найти строку, не содержащую определенной строки?

45
ответ дан 30 November 2019 в 02:39
поделиться

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

поэтому, чтобы отрицать

/svn/

, вы должны написать

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

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

/svn|cvs|nvs|mvc/

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

В JS это выглядело бы менее так:

!/svn|cvs|nvs|mvc/.test("this is your test string");
3
ответ дан 30 November 2019 в 02:39
поделиться

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

2
ответ дан 30 November 2019 в 02:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: