2014-01-30 4 views

ответ

3

Просто поиск \d{3} и получить первый матч:

match = re.search(r'\d{3}', inputstring) 
if match: 
    print match.group(0) 

Демонстрация:

>>> import re 
>>> inputstring = "Box 123 (NO) 456" 
>>> match = re.search(r'\d{3}', inputstring) 
>>> if match: 
...  print match.group(0) 
... 
123 

Следует отметить, что выше также соответствует подстроке; если у вас есть число, состоящее из четырех цифр, оно будет соответствовать первым 3 цифрам этого числа.

Ваш пост очень редкий по деталям; давайте предположим, что выше, не достаточно, но, что ваши номера разделяются пробелами, то вы можете соответствовать точно 3 цифры с помощью \b якорей:

match = re.search(r'\b\d{3}\b', inputstring) 

которые соответствуют только 3 цифры между символами без слов (начало или конец строки, пробелов, знаков препинания и т.д. Ничего не буква или цифра или подчеркивание):

>>> re.search(r'\b\d{3}\b', inputstring) 
<_sre.SRE_Match object at 0x106c4f100> 
>>> re.search(r'\b\d{3}\b', "Box 1234") 
>>> re.search(r'\b\d{3}\b', "Box 123") 
<_sre.SRE_Match object at 0x106c4f1d0> 
+0

'' match'' не '' re.match'', но не рекомендуется использовать путаное имя, так или иначе – eyquem

+2

@eyquem: Это ссылка MatchObject, это имя очень часто используется. –

+0

_ «Ошибка не становится истиной из-за умножения распространения» _ Ганди. – eyquem

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