Ваш вопрос немного неясен, поэтому, если я правильно понимаю, вы можете легко извлечь содержимое тега привязки (<a>
), но если тег <a
содержит href и id, то вы думаете, что он выигралне работаетКроме того, согласно заголовку вашего сообщения, вы также хотите извлечь значения атрибутов href
и id
, и они могут быть или не быть там.И фактически любой из них может отсутствовать.
В этом случае вы можете использовать это регулярное выражение,
<(a)(?:\s+href=(['"])(?<href>[^'"]*)\2\s*)?(?:\s+id=(['"])(?<id>[^'"]*)\4\s*)?>(.+?)<\/\1>
Объяснение:
<
-> начало тега (a)
-> Ожидает, что имя тега будет только `a ', и захватит его в группе 1 для сопоставления с обратной ссылкой в конце закрытия (?:\s+href=(['"])(?<href>[^'"]*)\2\s*)?
-> Эта часть соответствует атрибуту href
и фиксирует его значение в href
именованной группе, которая является необязательной (?:id=(['"])(?<id>[^'"]*)\4\s*)?
-> Эта часть соответствует атрибуту id
изахватывает значение в id
именованной группе, которая также является необязательной >
конец <a
тега (.+?)
-> Captures <a
теги внутренний текст <\/\1>
-> Соответствует завершающему тегу для <a
через обратную ссылку через \1
Это все равно будет соответствовать ссылке группы 1, которая будет a
согласно приведенному выше регулярному выражению, так кака также захватит значения атрибутов href
и id
, оба необязательные.
Вот демонстрационная версия
Позвольте мне знатьау, если это то, что вы хотели.В случае каких-либо запросов, дайте мне знать.