R语言:如何基于正则匹配年份子串并添加连字符
R语言中用gsub给匹配的年份子串加短横杠的正确做法
你之前的代码出错是因为正则分组用错了:'(2023)|(2022)|(2021)'把每个年份分到了不同的捕获组,替换时只取了第一个分组\\1。当匹配到2022时,第一个分组是空值,所以替换后直接把原年份换成了-,导致内容丢失。
给你几个正确的实现方式:
精准匹配指定年份:把所有目标年份放在同一个捕获组里,替换时保留分组内容再加
-gsub('(2023|2022|2021)', '\\1-', '12312022273qeq')运行后得到正确结果:
"12312022-273qeq"匹配2000-2099范围的年份:用通用正则代替逐个列举,更高效
gsub('(20\\d{2})', '\\1-', '12312022273qeq')这里
20\\d{2}会匹配所有以20开头的四位数字年份。匹配独立的年份(避免误匹配嵌入在长数字中的年份):加上单词边界
\\bgsub('\\b(20\\d{2})\\b', '\\1-', '1231 2022 273qeq')这个写法只会匹配作为独立单词存在的年份,不会处理像
12022里的2022。
内容的提问来源于stack exchange,提问作者Bogaso
相关产品推荐
相关产品推荐

