R语言使用正则表达式仅匹配指定字符首次出现的问题求助
R语言匹配字符串中指定字符首次出现的实现方案
需求说明
匹配字符串test / hello / abc中第一个出现的/字符,兼容不支持\K语法的场景。
实现方案
方案1:sub函数分组捕获
直接用替换逻辑提取第一个目标字符,代码如下:
input_str <- "test / hello / abc" result <- sub("^[^/]*(/).*$", "\\1", input_str)
正则逻辑:
^[^/]*匹配从字符串开头到第一个/之前的所有非/字符(/)捕获第一个出现的/到分组1.*$匹配第一个/之后到字符串结尾的所有内容- 用
\\1引用分组内容,最终返回第一个/
方案2:regexpr定位提取
利用R内置的regexpr默认只匹配第一个目标的特性,拿到位置后截取即可:
input_str <- "test / hello / abc" match_info <- regexpr("/", input_str) result <- substr(input_str, match_info[1], match_info[1] + attr(match_info, "match.length") - 1)
补充:\K语法兼容方案
如果要使用\K语法,只要在正则函数中开启perl = TRUE参数即可正常生效:
input_str <- "test / hello / abc" result <- regmatches(input_str, regexpr("^.*?\\K/", input_str, perl = TRUE))
内容的提问来源于stack exchange,提问作者persephone
相关产品推荐
相关产品推荐

