Regex - сопоставить шаблон, содержащий две черты, но не три - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь найти правильное регулярное выражение, соответствующее следующему шаблону:

any_characters--any_characters

, но не этот:

any_characters---any_characters

Разница в том, что нежелательный шаблон имеет ровно три последовательных штриха, а желаемый шаблон - ровно два

Я пробовал (.*)--(.*) (что-то вроде сиськи), но, конечно, это не работает, потому что .* соответствует тире, поэтому приведенное выше регулярное выражение будет соответствовать чему угодно, если у него есть две или более тире,

Ответы [ 2 ]

4 голосов
/ 01 ноября 2019

Если поддерживаются обходные пути, и вы хотите сопоставить слова без пробелов, и слово не может содержать --- но должно содержать - is

(?<!\S)(?!\S*---)\S+--\S+
  • (?<!\S) Утвердить, что находится наслева не является символом без пробелов
  • (?!\S*---) Утверждение, что справа не 3 раза ---
  • \S+--\S+ Совпадение 1+ непробельных символов, - и снова 1+ символы без пробелов

Regex demo

2 голосов
/ 01 ноября 2019

Как уже написано в комментарии, это должно сработать.

 '.*[^-]--[^-].*'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...