Python Regex (шаблон + шаблон + шаблон) [возврат] (шаблон) - PullRequest
0 голосов
/ 23 января 2019

Соскоб с selenium и разбор с re в python из строки

<div type="copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308</div>

Я хочу вернуться

756 W Peachtree St NW Atlanta GA 30308

Это регулярное выражение

("copy3").*?(?=</div>)

возвращает меня

"copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308

Но я бы хотел исключить все до > до 756

Как мне это включить?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Соскоб с селеном, используйте селен, чтобы получить это ...

my_element = driver.find_element_by_css_selector('div[type="copy3"]')
address = my_element.text
0 голосов
/ 23 января 2019

Сопоставьте >, затем запишите не < s, которые следуют в группе, и извлеките эту группу:

type="copy3"[^>]+>([^<]+)

https://regex101.com/r/BX2tVj/1

Если вы хотите соответствует только после первого <, вам также придется использовать lookbehind (что будет надежно, только если вы точно знаете, что может содержать атрибут class=""):

(?<=type="copy3" class="sc-bxivhb dHqnfT">)[^<]+

https://regex101.com/r/BX2tVj/2

Или используйте вместо этого модуль регулярных выражений, чтобы вы могли использовать \K:

type="copy3"[^>]+>\K[^<]+

https://regex101.com/r/BX2tVj/3

import regex
str = '<div type="copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308</div>'
match = regex.search(r'type="copy3"[^>]+>\K[^<]+', str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...