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
但是一旦我添加\+
它就停止识别正则表达式。任何解决方案?
答案 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']