2010-07-27 3 views
46

Можно создать дубликат:
What is the difference between Python’s re.search and re.match?питон - re.match против re.search

Я недавно прыгнув в понимание регулярных выражений с питоном.

Я смотрел на api; Я не могу понять разницу между:

re.match против re.search

, когда это лучше всего использовать каждый из них? профи? минусы?

Прошу вас, спасибо.

+2

Шаг 1. Поиск. http://stackoverflow.com/questions/180986/what-is-the-difference-between-pythons-re-search-and-re-match. После того, как вы обыскали, задайте ** конкретный ** вопрос. –

ответ

53

re.match() соответствует только началу строки. Обычная добыча. См. documentation.

+2

Точно. Trivial (слишком тривиальный, например, не учитывает режим MULTILINE): re.match = lambda pattern, string, flags = 0: re.search ('^' + pattern, string, flags) – delnan

+1

@delnan: Это было бы '\ A'. Но на самом деле 'match' более примитивен, чем' search'. – kennytm

36

От search() vs. match():

re.match() проверяет на совпадение только в начале строки, в то время как re.search() проверки на матч где-нибудь в строке.

>>> re.match("c", "abcdef") # No match 
>>> re.search("c", "abcdef") # Match 
<_sre.SRE_Match object at ...> 
7

Я только что узнал, что вы можете также искать подстроки, как это:

if 'c' in 'abcdef' 
# True 
+2

Хорошая идея, чтобы избежать регулярного выражения, если они вам не нужны. «Некоторые люди, столкнувшись с проблемой, думают:« Я знаю, я буду использовать регулярные выражения ». Теперь у них есть две проблемы ». Джейми Завински – neuronet

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