正则表达式时间格式HH:MM AM / am / PM / pm python

时间:2018-03-11 06:19:01

标签: 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(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'))

但我不能把时间作为TIMESTR的时间下午12:10捕获

试用过的正则表达式的链接。https://regex101.com/r/Z8lUIW/2  我该如何纠正?任何建议。请帮助

1 个答案:

答案 0 :(得分:0)

试试这个:

\s(\d{2}\:\d{2}\s?(?:AM|PM|am|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字面匹配字符AM(区分大小写)第二个替代PM第三个替代am第四个替代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']