需要关于正则表达式的帮助来匹配多个模式,但代码似乎不起作用。我想在简历中提取与正则表达式模式匹配的文本以获得“经验”
regex1 = '(?P<fmonth>\w+.\d+)\s*(\D|to)\s*(?P<smonth>\w+.\d+|present)'
regex2 = '(?P<day>\d{1,2})\s*(?P<tmonth>\w+.\d+)\s*(\D|-)\s*(?P<bmonth>\w+.\d+|present)'
regex3 = '(0[1-9]|1[0-2])/?([0-9]{4})\s*(\D|-)\s*(0[1-9]|1[0-2])/?([0-9]{4})'
regex4= '(\d{4}-\d{2})\s*(\D|-)\s*(\d{4}-\d{2}|present)'
regexList = [regex1,regex2,regex3,regex4]
for regex in regexList:
# experience= re.findall(regex,line)
experience = re.match(regex,line)
exp_.append(experience)
print(exp_)
但是,即使简历中存在日期格式匹配项,匹配项也始终返回“无”
样本输入:2020年12月-2021年4月
期望输出:需要在简历中使用上述日期范围计算总经验
1条答案
按热度按时间qij5mzcb1#
尽管在写这个答案的时候,问题中的代码是不可执行的,并且缺少一些部分,但我还是尝试了一些方法来帮助理解这个问题。
我认为你可以通过仔细创建捕获组来实现你想要的。基于您提供的简单输入
Sample Input:12/2020 - 04/2021
,我想出了这个解决方案。在这个例子中,我创建了2个正则表达式。在第3组之前,它们有相似的模式。
regex2
有一个稍微不同的结尾来捕获一个单词,而不是数字,导致它没有捕获组4和5。group1
:开始月份group2
:开始年份group3
:捕获完整的结束日期regex1
或字Present
具有regex2
gruop4
:如果结束日期不等于word,则捕获结束月份Present
group5
:如果结束日期不等于word,则捕获结束年份Present
注意,我没有处理各种输入可能出现的所有异常。结果