需要关于正则表达式的帮助来匹配多个模式,但代码似乎不起作用 我想在简历中提取与regex模式匹配的“经验”文本
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月
期望输出:需要在简历中使用上述日期范围计算总经验
尽管在写这个答案的时候,问题中的代码是不可执行的,并且缺少一些部分,但我还是尝试了一些方法来帮助理解这个问题
我认为你可以通过仔细创建捕获组来实现你想要的。根据您提供的简单输入
Sample Input:12/2020 - 04/2021
,我提出了这个解决方案在这个例子中,我创建了2个正则表达式。在第3组之前,它们有相似的模式
regex2
有一个稍微不同的结尾来捕获单词,而不是数字,这导致它没有捕获组4和5group1
:捕获开始月份group2
:捕获开始年份group3
:用regex1
或用regex2
捕获单词Present
捕获完整的结束日期gruop4
:如果结束日期不等于单词Present
,则捕获结束月份group5
:如果结束日期不等于单词Present
,则捕获结束年份注意,我没有处理各种输入可能出现的所有异常
结果
相关问题 更多 >
编程相关推荐