RegEx для захвата текста между двумя символами-разделителями, включая «общий» - PullRequest
0 голосов
/ 21 февраля 2019

Если у меня есть следующий текст ...

The quick :brown:fox: jumped over the lazy :dog:.

Я бы хотел, чтобы регулярное выражение захватывало все слова длиной от 2 : символов.В приведенном выше примере он должен вернуть :brown:, :fox:, :dog:.

. Пока у меня есть (\:{1}.\w*\s*\:{1}), который возвращает :brown: и :dog:.Я не могу понять, как поделиться : между 2 соответствующими группами, чтобы он также возвращал ':fox:'.

1 Ответ

0 голосов
/ 21 февраля 2019

Вот простой шаблон, который можно заставить работать:

(?<=:)(\w+)(?=:)

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

Матч будет доступен в качестве первой группы захвата.На самом деле, он также должен быть доступен как весь матч, потому что обходные пути ничего не потребляют.

Демо

Мне нравится вышеуказанный lookaroundподход, потому что это чисто и просто (по крайней мере, на мой взгляд).Если по какой-то причине вам не нужны обходные пути, просто используйте следующий шаблон:

:(\w+):

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

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