Регулярное выражение для тегов - PullRequest
2 голосов
/ 05 июля 2010

Мне нужно написать регулярное выражение, которое будет соответствовать любой паре тегов <(.*?)>.*?</\1>, но только если между ними нет других парных тегов.Имена тегов имеют переменную длину.

Ответы [ 3 ]

3 голосов
/ 10 июля 2010

Вы можете легко исключить вложенные теги, исключив угловую скобку, необходимую для их открытия:

<([^<>]+)>[^<]*</\1>

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

<(\S+)[^<>]*>[^<]*</\1>
1 голос
/ 10 июля 2010

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

0 голосов
/ 05 июля 2010

Пока вы сохраняете «Только если между ними нет других тегов», это легко.

<\s*([^>]+?)\s*>[^<]*</\s*\1\s*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...