我在正则表达式方面有点先发制人,我的问题是:
我今天晚些时候在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
答案 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/
。
1 am