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

Python 日期、时间和电话的正则表达式不匹配,python,regex,Python,Regex,我想写一个正则表达式来匹配这个模式。我写了这样的东西- 29/11/16, 12:22 AM - ‪+91 99102 28632‬ 但它与模式不匹配。我正在使用Python的内置Re模块编译模式,并使用finditer方法查找匹配项并创建一个interator。但是,实际上,没有找到与此匹配的 当我使用升华文本测试我的正则表达式时,我注意到它一直工作到 \d{2}\/\d{2}\/\d{2}\s\d?\d:\d{2}\s(AM | PM)\s\-\s 但当我添加\+时,它就不再识别正则表达式

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

29/11/16, 12:22 AM - ‪+91 99102 28632‬
但它与模式不匹配。我正在使用Python的内置Re模块编译模式,并使用finditer方法查找匹配项并创建一个interator。但是,实际上,没有找到与此匹配的

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

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


但当我添加
\+
时,它就不再识别正则表达式了。有解决方案吗?

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

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

问题在于您的输入,而不是正则表达式。使用
print(repr(inputvalue))
查看一下,您将得到
'29/11/16,12:22 AM-\u202a+91 99102 28632\u202c'
。这些是方向标记。提示:
'29/11/16,12:22 AM-‪+91 99102 28632.替换('\u202a','')
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']