Скажем, у меня есть список таких слов: мышь, abba, рев, акцент
Мне нужно регулярное выражение, которое будет соответствовать mouse и roar, но не abba или accent, потому что последние два имеют последовательные повторяющиеся символы (bb и cc).
Мне удалось придумать следующий шаблон, чтобы сопоставить только слова С двойными последовательными символами:
.*(.)\1.*
Однако мне нужно противоположное, но мне трудно его инвертировать.
2 ответа
Вы можете использовать это:
\b(?:([a-z])(?!\1))+\b
Он использует отрицательный просмотр вперед (?!..)
, который проверяет, что за каждым захватом не следует себя. Чтобы быть уверенным, что шаблон не обрезает слово перед концом слова или не начинается в середине слова, я добавил границы слова \b
с каждой стороны.
По-другому:
(?![a-z]*([a-z])\1)\b[a-z]+\b
Вы можете использовать это регулярное выражение на основе опережающего просмотра:
^(?:(.)(?!\1))*$
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки, синтаксического анализа и преобразования строк. Поскольку регулярные выражения не полностью стандартизированы, все вопросы с этим тегом должны также включать тег, определяющий применимый язык программирования или инструмент.