2014-10-29 3 views
0

Мне интересно, есть ли лучшее решение Python Regex для того, которое у меня есть? В настоящее время мой код:Как игнорировать символы с Python Regex

import re 

n = '+17021234567' 
m = '7021234567' 
match = re.search(r'(?:\+1)?(\d{10})', n) 
match.group(1) 

match = re.search(r'(?:\+1)?(\d{10})', m) 
match.group(1) 

Целью кода является только извлечь 10 цифр рН # если она имеет ведущую +1 или нет. В настоящее время это работает, но мне интересно, есть ли способ просто позвонить match.group(), чтобы получить 10-значный ph # без звонка match.group(1)?

ответ

2

Нет, без использования групп захвата, это невозможно с помощью функции re.match. Поскольку re.match пытается совместить входную строку с начала. Но это может быть возможно через re.search

>>> re.search(r'\d{10}$', n).group() 
'7021234567' 
>>> re.search(r'\d{10}$', m).group() 
'7021234567' 
+0

Я не думаю, что OP означало re.match, но переменная соответствовала используемой – Totem

1

вы хотите улавливать только использовать цифры '\ d' для цифры

n = '+17021234567' 
re.findall('\d{10}$',n) 
1

использовать этот шаблон

(?<=^|\+1)\d{10}$ 

Demo

(?<=     look behind to see if there is: 
^      the beginning of the string 
|      OR 
    \+1      '+1' 
)      end of look-behind 
\d{10}     digits (0-9) (10 times) 
$      before an optional \n, and the end of the string 
Смежные вопросы