захватить строку после специального символа в строке в python [duplicate]

Это написано на Python,

import re
s='1 89059809102/30589533 IronMan 30 Santa Ana Massage table / IronMan 30 Santa Ana Massage table'
pattern='\s(\d{11})/(\d{8})'
re.match(pattern,s)

, он не возвращает ни одного.

Я попытался снять скобки,

pattern='\s\d{11}/\d{8}' 

Он все еще возвращает [F3].

Мои вопросы:

Почему re.match ничего не находит? В чем разница с шаблоном или без него?
8
задан 18 February 2013 в 16:29

1 ответ

re.match «соответствует» с начала строки, но есть дополнительный 1.

Вместо этого используйте re.search, который будет «искать» в любом месте строки. И, в вашем случае, также найдите что-то:

>>> re.search(pattern,s).groups()
('89059809102', '30589533')

Если вы удалите скобки в шаблоне, он все равно вернет действительный объект _sre.SRE_Match, но с пустым groups:

>>> re.search('\s\d{11}/\d{8}',s).groups()
()
19
ответ дан 15 August 2018 в 15:33
  • 1
    Это ясное объяснение. Я понимаю, что вы имеете в виду, спасибо! – bing 19 February 2013 в 06:09

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

Похожие вопросы: