如何在" am"之前或之后取值。和" pm"?

时间:2018-01-02 13:54:55

标签: python regex

我在正则表达式方面有点先发制人,我的问题是:

我今天晚些时候在5am午休。

我今天晚些时候在5 am午休。

应该考虑的案例是在数字和am之间留出空格而没有空格。

在这些第一个和第二个例子中,我想要的值是5

编辑:我尝试过但没有工作:

import re
value = re.findall('/([1-9]|1[012]) ?[ap]m/','I have a lunch break at 5am later today.')
print   value

4 个答案:

答案 0 :(得分:1)

试试这个:

import re
value = re.search('((1[012]|[1-9])\s?(am|pm))','I have a lunch break at 5 pm later today.').group().replace('pm','').replace('am','')
print(value)

答案 1 :(得分:0)

这样的正则表达式可能对您有用:

/([1-9]|1[012]) ?[ap]m/

答案 2 :(得分:0)

()表示提取此部分,在[]中指定我们想要的目标,*匹配前面表达式的0次或更多次出现。

import re    
s = re.findall('([0-9 ]*)am' , '5am 5 am 12 am 12am')
for x in s:
    print(x.strip())

答案 3 :(得分:0)

Python不需要指定正则表达式分隔符。您在python中的当前正则表达式字符串是'/([1-9]|1[012]) ?[ap]m/'。虽然这不是不正确的,但实际使用的分隔符/实际上是在python中使用的:也就是说它实际上试图在字符串中查找/以使格式匹配 - 例如 - {{ 1}}而不是/1 am/

代码

See code in use here

1 am