【问题标题】:python regex for finding ssn in text not working [duplicate]用于在文本中查找 ssn 的 python 正则表达式不起作用 [重复]
【发布时间】:2015-11-18 23:34:17
【问题描述】:
>>> pat=re.compile('^\d{3}-\d{2}-\d{4}$')
>>> pat.findall('my sssn is 111-22-3333')

我试图在文本中捕捉 ssn。我尝试了 pythex 中的表达式,它在那里工作,但它在 python 中不起作用。我是新手。

【问题讨论】:

  • 然后删除^$。也使用原始字符串:pat=re.compile(r'\d{3}-\d{2}-\d{4}').
  • “移除锚点”在这种情况下是一个神奇的短语。我认为在解决方案如此明显的情况下增加此类帖子毫无意义。

标签: regex python-3.x


【解决方案1】:

删除 ^$ 锚点:

你的正则表达式应该是:

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

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

$ 匹配字符串中最后一个字符之后,除非你不希望在最后四位数字之后出现任何内容,否则这里并不需要它。

【讨论】:

    【解决方案2】:
    pat=re.compile('^.*?(\d{3}-\d{2}-\d{4}).*$')
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多