Как сопоставить $ или $$, но нет, если они являются одним из этих <$ и <$$ - PullRequest
2 голосов
/ 16 марта 2020

Я хочу соответствовать $ или $$ в строке, но не в том случае, если перед ними стоит <

, это кажется близким, но соответствует одному $ в <$$ case

(?<!\<)\$\$|(?<!\<)\$

so ...

$BS<$BI> - соответствует BS

$$BS<$$BI> - соответствует BS

Ответы [ 3 ]

1 голос
/ 16 марта 2020

Вы можете использовать это регулярное выражение с 2 отрицательными взглядами за утверждениями:

(?<!<)(?<!<\$)\$\$?

Демонстрация RegEx

Подробности RegEx:

  • (?<!<): утверждать, что у нас нет < на предыдущей позиции
  • (?<!<\$): утверждать, что у нас нет <$ на предыдущей позиции
  • \$\$?: совпадение 1 или 2 $ символов
0 голосов
/ 16 марта 2020

Другой вариант - использовать совпадение для того, чего вы не хотите, и чередование с группой захвата, чтобы оставить то, что вы хотите:

<\${1,2}|(\${1,2})

Regex demo

Если квантификатор в видимости поддерживается, вы можете использовать:

(?<!<\$?)\${1,2}

Regex demo

0 голосов
/ 16 марта 2020

Вы также можете потреблять то, что вы не хотите, а затем сопоставлять то, что вы хотите, поочередно.

/\<\$\$?(*SKIP)(*FAIL)|\$\$?/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...