Регулярное выражение: совпадать несколько раз между тегами - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть следующая строка:

def index.html index.html default <span class='fp-default'>#default</span> def <span class='fp-default'>#default ddsad def</span>#default<span class='fp-user' default>#user</span>#default

И я хочу сопоставить все вхождения данной подстроки (например, def) между тегами.

Пока мне удалось создать следующее регулярное выражение, но оно не работает должным образом (соответствует только одному вхождению между тегами):

(?:(?<=>)|^)([^<]*?(def)[^<]*?)*(?:(?=<)|$)

Онлайновый тестер регулярных выражений: https://regex101.com/r/oc3ptR/6

Есть идеи? Tx!

1 Ответ

2 голосов
/ 19 февраля 2020

Вы можете попробовать это:

def(?=[^<>]*?<\/)

Объяснение:

  1. def совпадений def
  2. (?=[^<>]*<\/) Позитивный взгляд вперед, который смотрит для </, т. е. конечного тега без соответствия < и > перед ним [^<>]*?

Пример

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