R语言正则表达式:从格式不统一的字符串中提取起止年份
正则表达式提取年份方案
可以通过正则表达式实现这两个提取需求,对应的正则及说明如下:
1. 提取开始年份(破折号前的首个四位数字)
正则表达式:
(\d{4})(?=[^-]*-)
说明
\d{4}:匹配连续四位数字(年份格式)(?=[^-]*-):正向预查规则,确保匹配的四位数字后面存在破折号,且两者之间没有其他破折号,以此锁定破折号前的首个年份数字。
如果使用支持捕获组的工具,也可以用以下表达式,提取第一个捕获组内容即可:
^.*?(\d{4}).*?-
2. 提取结束年份(逗号前的目标四位数字,即破折号后、逗号前的年份)
正则表达式:
(\d{4})(?=[^,]*$)
说明
\d{4}:匹配连续四位数字(年份格式)(?=[^,]*$):正向预查规则,确保匹配的四位数字后面直到字符串结尾没有逗号,以此锁定逗号前的最后一个年份数字(即结束年份)。
若要更精准锁定破折号后的内容,可使用以下表达式,提取第一个捕获组内容即可:
-(?:(?!-).)*?(\d{4})(?=[^,]*,)
测试验证
针对你给出的示例字符串:
"05.1990 - 06.1990, Poland":开始年份提取1990,结束年份提取1990"11.05.1990 - 13.07.1990, Portugal":开始年份提取1990,结束年份提取1990"1993 - 1993, Romania":开始年份提取1993,结束年份提取1993
内容的提问来源于stack exchange,提问作者Piotrq
相关产品推荐
相关产品推荐

