Регулярное выражение для проверки тега и получения определенной части строк

1

У меня проблема с регулярным выражением. Я проверяю строки как тег: <a href="/abc/def/ghk/">test_test</a>. Я хочу захватить только часть /abc/def/ghk, используя регулярное выражение.

Я использую python и пытаюсь использовать разные выражения.

  • 1
    Это не URL. Это тег, который содержит URL. Хотите проанализировать HTML-код, содержащий тег? Или вы хотите проанализировать URL, который является значением атрибута href тега?
  • 0
    Кроме того, какие выражения вы пробовали?
Теги:

3 ответа

4

Я бы использовал BeautifulSoup, как это делалось для таких действий:

>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup('<a href="/abc/def/ghk/">test_test</a>')
>>> print soup.findAll('a', {'href': True})[0]['href']
/abc/def/ghk/
  • 0
    Не все a элементы имеют href атрибута; чтобы извлечь первый a элемент с href атрибута можно использовать: soup.find('a', href=True)
  • 0
    Вопрос был - регулярное выражение.
Показать ещё 6 комментариев
1

Вы можете использовать lxml для работы со ссылками:

from lxml import html

for _, attr, link, _ in html.iterlinks('<a href="/abc/def/ghk/">test_test</a>'):
    if attr == 'href':
       print link

Выход

/abc/def/ghk/
1

Достаточно ли этого?

>>> re.search('<a\s+href="(\S+?)\/"', tags).group(1)
'/abc/def/ghk'
>>>
  • 0
    Теперь добавьте атрибут class ;)
  • 0
    @Blender, я в порядке в любом случае ... но, честно говоря, я предпочитаю lxml вместо BS для этой задачи.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню