Отрицательный Lookahead с несколькими условиями - PullRequest
0 голосов
/ 13 сентября 2018

Мне нужно извлечь $ x, но не $$ x и '$ x'.

  1. Чтение $$ x недопустимо. Пожалуйста, используйте $ x.
  2. Вы выбрали значение «$ x» в качестве $ x.

Следующее регулярное выражение работает для 1.

\$x(?!$)\

Я использовал следующую перемену (|), которая явно не удалась для второй строки.

\$x(?!$)|\$x(?!\')\

Как проверить наличие нескольких отрицательных прогнозов?

P.S: Должен быть совместим с Javascript Regex.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы также можете упростить регулярное выражение @revo, убрав взгляд вперед:

(^|[^'$])\$x([^']?)

Заменено на:

$1\$y$2

См. Демонстрацию:

0 голосов
/ 13 сентября 2018

Следующий RegEx должен сделать трюк:

(?<!')(?<!\$)\$x(?!')

Он начинается с проверки, что в начале нет ', а перед $x нет $, и, наконец, не заканчивается '.

Редактировать для JavaScript :

^\$x(?!')

Это выберет $x в начале (без '), за которым не следует '.

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