R语言:统计无前置特定单词的各类格式数字出现次数问题
解决排除"about"后数字的统计问题
原代码问题分析
- 正则中的
^锚定了字符串起始位置,只能匹配开头的第一个数字,后续位置的数字无法被匹配。 - 负前瞻
(?!about\\s)的位置错误,仅在字符串开头检查是否无"about ",无法排除中间位置"about"后的数字。
修正方案
去掉^,改用**负后顾(?<!about\\s)**检查数字前是否存在"about ",确保只统计前面没有"about "的数字。
修正后的代码
library(stringr) test <- "2% about 2% 2 about 2" str_count(test, "(?<!about\\s)(\\+?)(\\.?)\\d+")
运行结果为2,符合预期。
补充说明
如果需要将带%的数字(如2%)作为整体匹配,可在正则末尾添加可选的%:
str_count(test, "(?<!about\\s)(\\+?)(\\.?)\\d+%?")
同样返回2,匹配的是2%和2两个目标项。
内容的提问来源于stack exchange,提问作者Samarth A
相关产品推荐
相关产品推荐

