>>> pat=re.compile('^\d{3}-\d{2}-\d{4}$')
>>> pat.findall('my sssn is 111-22-3333')
我试图在文本中捕获ssn。我尝试了pythex中的表达式并且它在那里工作,但它并没有在python中运行。我是新手。
答案 0 :(得分:1)
删除^
和$
锚:
你的正则表达式应该是:
\d{3}-\d{2}-\d{4}
插入符^
与字符串中第一个字符前的位置匹配,由于输入中有m
,\d{3}
不匹配。
$
在字符串中的 last 字符后匹配,除非您希望在最后四位数之后不显示任何内容,否则此处并不需要它。
答案 1 :(得分:0)
pat=re.compile('^.*?(\d{3}-\d{2}-\d{4}).*$')
只需group
你想要什么,并使用.*
来捕获缓冲区。这将使^$
匹配整个字符串而不是你正在做的事情,因为那时有字符和在你想要之前。