如何使用Python Regex忽略字符

时间:2014-10-29 23:47:21

标签: 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位数的ph#,如果它具有前导+1。目前它有效,但我想知道有没有办法只需拨打match.group()即可获得10位数的ph#而无需拨打match.group(1)

3 个答案:

答案 0 :(得分:2)

不,如果不使用捕获组,则无法通过re.match功能实现。因为re.match尝试从头开始匹配输入字符串。但是可以通过re.search

来实现
>>> re.search(r'\d{10}$', n).group()
'7021234567'
>>> re.search(r'\d{10}$', m).group()
'7021234567'

答案 1 :(得分:1)

你想只捕获数字使用'\ d'代表数字

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

答案 2 :(得分: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