给出一个非结构化的HTML文本,其中包含一些格式为'%b%d'的日期值,并带有一些约束(请参见下文),您认为哪种方法最合适:
这是HTML文本的摘录:
text = '...some text ...>Jan 29 AMC<...some text ...'
我想提取零件:
答案 0 :(得分:2)
使用此正则表达式:
<.*?>(\w{3}\s\d{2}\s(AMC|BMO))
*请注意,该模式可以使您获得非月模式!否则,您必须手动设置它们。
<.*?>((Jan|Feb|....)\s\d{2}\s(AMC|BMO))
Python代码:
import re
reg = r'<.*?>(\w{3}\s\d{2}\s(AMC|BMO))'
text = '<...some text ...>Jan 29 AMC</...some text ...>'
Res = re.findall(reg,text)
if len(Res) != 0:
for r in Res:
print(r[0])
或
import re
reg = r'<.*?>(\w{3}\s\d{2}\s(AMC|BMO))'
text = '<...some text ...>Jan 29 AMC</...some text ...>'
Res = re.match(reg,text)
if Res:
print ('Valid')
答案 1 :(得分:1)
对于我标记为重复的问题,您也可以按照dateutil.parser()的说明使用this answewr。
import dateutil.parser as DateParser
from datetime import datetime
text = '...sometext...>Jan 29 AMC<...sometext...'
parsed_date = DateParser.parse(text, fuzzy=True)
print(parsed_date)
#2019-01-29 00:00:00
注意 这与您提到的模式匹配无关,但确实为您提供了一个日期,如果找到多个日期,它也会返回多个日期。但这确实有些猜测。