如何编写正则表达式去除连续重复的单个或两个单词
用正则移除R中连续重复的单个/两个单词
要实现移除句子中连续重复的单个或两个单词,保留首次出现的内容,可以使用以下正则方案:
正则表达式与代码实现
核心思路是捕获单个或两个连续单词的组,匹配其后重复的相同内容,并用首次出现的内容替换重复部分:
# 定义正则模式 pattern <- "\\b((\\w+\\s)?\\w+)\\s+\\1\\b" # 测试字符串 string_a = "hello hello, how are you you?" string_b = "goodbye world goodbye world, I am flying to the the moon!" # 执行替换 gsub(pattern, "\\1", string_a) gsub(pattern, "\\1", string_b)
输出结果
[1] "hello, how are you?" [2] "goodbye world, I am flying to the moon!"
正则说明
\\b:单词边界,确保匹配完整的单词,避免误匹配单词的部分片段((\\w+\\s)?\\w+):捕获组,支持两种情况:- 单个单词:
\\w+ - 两个连续单词:
\\w+\\s\\w+((\\w+\\s)?表示可选的第一个单词加空格)
- 单个单词:
\\s+:匹配重复组之间的一个或多个空格\\1:引用前面捕获的内容,用首次出现的单词/单词组替换重复部分
内容的提问来源于stack exchange,提问作者zimia
相关产品推荐
相关产品推荐

