日期,时间和电话的正则表达式不匹配

时间:2017-12-23 18:59:11

标签: python regex

29/11/16, 12:22 AM - ‪+91 99102 28632‬

我想写一个正则表达式来匹配这个模式。我写了这样的东西 -

\d{2}\/\d{2}\/\d{2},\s\d?\d:\d{2}\s(AM|PM)\s\-\s\+91\s\d{5}\s\d{5}

但它与模式不匹配。我正在使用Python的内置Re模块来编译模式和finditer方法来查找匹配并创建一个interator。但实际上,没有找到匹配。

当我使用sublime文本来测试我的正则表达式时,我注意到它一直工作到

\d{2}\/\d{2}\/\d{2},\s\d?\d:\d{2}\s(AM|PM)\s\-\s

但是一旦我添加\+它就停止识别正则表达式。任何解决方案?

1 个答案:

答案 0 :(得分:0)

在字符串中的“ - ”之后的空格后面有一个隐藏的从左到右的嵌入字符。删除后,你的正则表达式工作正常:

In [ ]: import re
   ...: string = "29/11/16, 12:22 AM - ‪+91 99102 28632‬"
   ...: pattern = re.compile(r"\d{2}\/\d{2}\/\d{2},\s\d?\d:\d{2}\s(AM|PM)\s\-\s\+91\s\d{5}\s\d{5}")
   ...: re.findall(pattern, string)
Out[ ]: []

In [ ]: string = string.replace("\u202a", "")
   ...: re.findall(pattern, string)
Out[ ]: ['AM']