регулярное выражение для соответствия строки, но не подстроки - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть это регулярное выражение /\$([^:\n]+)/ и следующие строки

  1. gid$gid::
  2. $gid::
  3. ::$gid
  4. bar$:$gid:f$oo

в настоящее время запускает регулярное выражение для каждой строки независимо , я получаю эти совпадения

  1. gid
  2. gid
  3. gid
  4. [gid, oo]

Мне нужно изменить регулярное выражение, чтобы не было совпадений в числе 1 и только один матч в номере 4 - середина $gid. Другими словами, он соответствует только строкам, начинающимся с $, которые начинаются с начала строки или сразу после двоеточия .

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Вы можете найти другие примеры, которые еще больше ограничивают то, что вам нужно, но, похоже, это работает, как вы описываете:

(^|:)(\$[^:\n]+)

Работа здесь https://regex101.com/r/HGtNw1/1

0 голосов
/ 23 февраля 2020

Я использовал (php)

preg_match_all('/(^|:)\$(\w+)/m', $subject, $matches);

опции m и подразумеваемые опции g (в функции _all) были ключом к получению нужного мне ответа .

https://www.phpliveregex.com/p/v35

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