Почему моя обратная ссылка в моем регулярном выражении не работает? - PullRequest
0 голосов
/ 28 марта 2012

Я написал регулярное выражение, пытаясь сопоставить некоторый HTML-код, но не могу его заставить работать У меня проблема с деталью после "wp-caption".

class=(["\'])(?:[\w\s])*?wp-caption[\s\1]

Код, который я хочу найти:

class="wp-caption"
class='wp-caption'
class="wp-caption foo"
class="foo wp-caption"

Я сопоставляю первые три результата, но не четвертый. Я не думаю, что \ 1 работает. Есть мысли?

BTdubs Я использовал http://regexpal.com/ для тестирования.

Ответы [ 3 ]

1 голос
/ 28 марта 2012

Это тоже может сработать

class\s*=\s*(['"])(?:(?!\1).)*wp-caption(?:(?!\1).)*\1
0 голосов
/ 28 марта 2012

Это не работает, потому что на обратные ссылки нельзя ссылаться из класса символов (содержимое в квадратных скобках []).Как уже упоминалось в другом ответе, вы можете использовать обратную ссылку в предвкушении, если только вы не используете язык, который не поддерживает обходной путь ...

Короче говоря, что вам нужно сделать, зависит от языка, который выиспользуют (реализации регулярных выражений сильно зависят от того, какой язык их реализует)

0 голосов
/ 28 марта 2012
class=(["\'])(?:[\w\s])*wp-caption[\w\s]*\1
...