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

问题描述 投票:-1回答:1
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。但实际上,没有找到匹配。

当我使用崇高的文本来测试我的正则表达式时,我注意到它一直有效

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

但是一旦我添加了\+,它就不再认可正则表达式了。有解决方案吗

python regex
1个回答
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']
© www.soinside.com 2019 - 2024. All rights reserved.