2017-02-15 3 views
-2

Да, я знаю, я не должен использовать регулярное выражение для xml, но мне нужно, и это только практика, чтобы узнать больше о регулярном выражении.Повторная группа захвата внутри определенных тегов xml

Я хочу захватить все атрибуты xml, но только внутри определенного тега.

Тег "a" в данном случае.

Здесь вы можете увидеть, что я пытался: https://regex101.com/r/qZGjbL/1

Это регулярное выражение я использую

="\s*([^"]*)"[\s|>|\/] 

Он выбирает все атрибуты в моем XML, но я не знаю, как ограничьте его только для применения в моем теге «a».

Заранее спасибо.

ответ

1

eg. Вход:

<a> 
    <iden asd="foo" bde="thing"> <bla bla="blabla"/> 
</a> 
<b> 
    <iden asd="foo" bde="thing"> <bla bla="blabla"/> 
</b> 

Сначала найдите содержимое тегов вы заинтересованы в ([\W\w]*?)</a>

<iden asd="foo" bde="thing"> <bla bla="blabla"/> 

Затем найти атрибуты внутри этого контента.. ="\s*([^"]*)"[\s|>|/]

foo 
thing 
blabla 
+0

Значит, это не может быть сделано в одном регулярном выражении? оказывает ли это влияние на производительность? – leoxs

+0

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

+0

Он не должен влиять на производительность больше, чем на регулярное выражение, которое объединяет два; все, что у вас есть, - это накладные расходы на запуск другого регулярного выражения, которое является супер-минимальным. – Whothehellisthat

Смежные вопросы