Регулярное выражение & quot; совпадать с & quot; (в двух случаях)

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

Я не могу заставить его соответствовать link= ИЛИ ЖЕ pid= (обратите внимание на место перед каждым из них).

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

\[(quote)\]?\s*(?:author)?=?(.[^link=|pid=]+[\w]*).*?\]

Пример строки, на которой я тестирую регулярное выражение. Я пытаюсь запечатлеть две вещи: «цитата» (которая становится моими $ 1), а затем имя пользователя (в различных случаях, которое становится моими $ 2).

Подстановка [$ 1 = $ 2].

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

Test

С приведенным выше выражением регулярного выражения оно будет соответствовать:

Test

Когда оно должно совпадать со всем вышеперечисленным, кроме «pid». Вот более полный пример: http://regex101.com/r/iK2nO2/1

Как я могу более четко определить, где должна остановиться группа захвата? Я использую это с PHP, поэтому я думаю, что вкус PCRE.

2

Решение

\[(quote)\]?\s*(?:author)?=?((?:(?!\s+link|\s+pid).)+).*?\]

Попробуйте это. См. Демо.

http://regex101.com/r/iK2nO2/3

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]