Можно ли выполнять строковое отрицание в регулярных выражениях? Мне нужно сопоставить все строки, которые не содержат строку ".."
. Я знаю, что вы можете использовать ^[^\.]*$
для соответствия всем строкам, которые не содержат "."
, но мне нужно сопоставить более одного символа. Я знаю, что могу просто сопоставить строку, содержащую ".."
, а затем отрицать возвращаемое значение совпадения для достижения того же результата, но я просто задавался вопросом, возможно ли это.
Отрицание строк с использованием регулярных выражений
Ответ 1
Вы можете использовать негативные образы:
^(?!.*\.\.).*$
Это приводит к тому, что выражение не соответствует, если оно может найти последовательность из двух периодов в любой строке.
Ответ 2
^(?:(?!\.\.).)*$
будет соответствовать только в том случае, если в строке нет двух последовательных точек.