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



我在正则表达式方面有点入门,我的问题是:

我今天晚些时候在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

试试这个:

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)

简介

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


法典

在此处查看正在使用的代码

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

像这样的正则表达式可能适合您:

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

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

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

最新更新