Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中时间格式HH:MM AM/AM/PM/PM的正则表达式_Python_Regex - Fatal编程技术网

python中时间格式HH:MM AM/AM/PM/PM的正则表达式

python中时间格式HH:MM AM/AM/PM/PM的正则表达式,python,regex,Python,Regex,我已经编写了正则表达式来捕获HH:MM AM/PM/AM/PM,但它无法提取精确的模式 正则表达式代码: import re def replace_entities(example): res = '' # TIME m = re.findall("\d{2}:\d{2} (:?AM|PM|am|pm)", example) if m: for id in m: res = res +"\n{} :TIMESTR".format

我已经编写了正则表达式来捕获HH:MM AM/PM/AM/PM,但它无法提取精确的模式

正则表达式代码:

import re
def replace_entities(example):
    res = ''
 # TIME
    m = re.findall("\d{2}:\d{2} (:?AM|PM|am|pm)", example)
    if m:
        for id in m:
            res = res +"\n{} :TIMESTR".format(id)

    m = re.findall("\d{2}:\d{2}:\d{3} (:?AM|PM|am|pm)", example)
    if m:
        for id in m:
            res = res +"\n{} :TIMESTR".format(id)

print(replace_entities('My name is sayli,  Todays time is 12:10 PM Date is 21/08/2018 otal amount is www.amazon.com  chandanpatil@yahoo.com euros 10,2018/13/09  saylijawale@gmail.com. https://imarticus.com   Account number is Accountsortcode:abca123456'))
但我不想把下午12:10的时间作为TIMESTR来记录

已尝试正则表达式的链接。 我如何纠正它?任何建议。请帮助

尝试以下建议:

说明:

\s
匹配任何空白字符(等于[\r\n\t\f\v])

\d{2}
匹配一个数字(等于[0-9]){2}量词-精确匹配2次

\:
匹配字符:字面上(区分大小写)

\d{2}
匹配一个数字(等于[0-9]){2}量词-精确匹配2次

\s?
匹配任何空白字符(等于[\r\n\t\f\v])0次或更多次

非捕获组
(?:AM | PM | AM | PM)
第一个备选方案
AM
与字符
AM
按字面(区分大小写)匹配第二个备选方案
PM
3个备选方案
AM
4个备选方案
PM

在行动中:

>>> import re
>>> re.findall(r'\s(\d{2}\:\d{2}\s?(?:AM|PM|am|pm))', 'Time today is 10:30 PM')
['10:30 PM']
试试这个:

说明:

\s
匹配任何空白字符(等于[\r\n\t\f\v])

\d{2}
匹配一个数字(等于[0-9]){2}量词-精确匹配2次

\:
匹配字符:字面上(区分大小写)

\d{2}
匹配一个数字(等于[0-9]){2}量词-精确匹配2次

\s?
匹配任何空白字符(等于[\r\n\t\f\v])0次或更多次

非捕获组
(?:AM | PM | AM | PM)
第一个备选方案
AM
与字符
AM
按字面(区分大小写)匹配第二个备选方案
PM
3个备选方案
AM
4个备选方案
PM

在行动中:

>>> import re
>>> re.findall(r'\s(\d{2}\:\d{2}\s?(?:AM|PM|am|pm))', 'Time today is 10:30 PM')
['10:30 PM']

这是你的全部代码吗?这是你的全部代码吗?很抱歉,它被错误地点击了。这个解决方案帮助了meGlad,帮助了他,快乐编程!还有一个问题,如果文本是上午10:30,那么在时间和上午/下午之间没有间隔,该怎么办?你能帮我解决这个问题吗更新了我的答案来解释这个问题,我把时间和上午/下午之间的
\s
设置为可选的。@chrisz有理由逃避吗
?似乎没有必要。很抱歉,它被误点击了。这个解决方案帮助了meGlad,帮助了他,快乐编程!还有一个问题,如果文本是上午10:30,那么在时间和上午/下午之间没有间隔,该怎么办?你能帮我解决这个问题吗更新了我的答案来解释这个问题,我把时间和上午/下午之间的
\s
设置为可选的。@chrisz有理由逃避吗
?似乎没有必要。