用于在文本中找不到ssn的python正则表达式

时间:2015-11-18 15:30:42

标签: regex python-3.x

>>> pat=re.compile('^\d{3}-\d{2}-\d{4}$')
>>> pat.findall('my sssn is 111-22-3333')

我试图在文本中捕获ssn。我尝试了pythex中的表达式并且它在那里工作,但它并没有在python中运行。我是新手。

2 个答案:

答案 0 :(得分:1)

删除^$锚:

你的正则表达式应该是:

\d{3}-\d{2}-\d{4}

插入符^与字符串中第一个字符前的位置匹配,由于输入中有m\d{3}不匹配。

$在字符串中的 last 字符后匹配,除非您希望在最后四位数之后不显示任何内容,否则此处并不需要它。

答案 1 :(得分:0)

pat=re.compile('^.*?(\d{3}-\d{2}-\d{4}).*$')

只需group你想要什么,并使用.*来捕获缓冲区。这将使^$匹配整个字符串而不是你正在做的事情,因为那时有字符和在你想要之前。