Python и "ре"

В учебнике, который у меня есть по Regex в python, объясняется, как использовать модуль re в python, я хотел получить URL-адрес из тега A, поэтому, зная Regex, я написал правильное выражение и протестировал его в своем выбранном приложении для тестирования регулярных выражений и обеспечил его работал. При размещении в Python это не удалось.

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

regex = ".*(a_regex_of_pure_awesomeness)"

в

regex = "a_regex_of_pure_awesomeness"

Хорошо, это стандартное регулярное выражение URL, но я хотел избежать любой потенциальной путаницы в том, от чего я хочу избавиться, и, возможно, притвориться забавным.

Вероятно, вас сбивают с толку разные методы re.search и re.match.

mmaibaum 16.09.2008 17:56
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
7
1
973
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы используете метод re.match() или re.search()? Я понимаю, что re.match() предполагает "^" в начале вашего выражения и будет искать только в начале текста, в то время как re.search() действует больше как регулярные выражения Perl и будет соответствовать только началу текста, если вы включите " ^ "в начале вашего выражения. Надеюсь, это поможет.

Ответ принят как подходящий

В Python есть различие между «совпадением» и «поиском»; match ищет только шаблон в начале строки, а поиск ищет шаблон, начиная с любого места в строке.

Документы Python regex
Сопоставление и поиск

>>> import re
>>> pattern = re.compile("url")
>>> string = "   url"
>>> pattern.match(string)
>>> pattern.search(string)
<_sre.SRE_Match object at 0xb7f7a6e8>

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(your_html)
for a in soup.findAll('a', href=True):
    # do something with `a` w/ href attribute
    print a['href']

Другие вопросы по теме