Попробуйте <(("[^"]*"|'[^']*'|[^'">])*)>(\w+)<\/\1>
.Должен работать, когда я вернусь домой, я проверю это.Идея состоит в том, что первая группа захвата находит содержимое в <>
, а ее вложенная группа захвата предотвращает ситуацию, подобную <blah=">">
, совпадающему как <blah=">
.Третья группа захвата (\w+)
соответствует внутреннему слову.Это может быть изменено в зависимости от формата возможностей, которые вы можете иметь в <tag>content</tag>
.Наконец, \1
оглядывается на содержимое первой группы захвата, так что таким образом вы найдете правильный закрывающий тег.
Edit : я протестировал это с perl иработы.