You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用正则表达式按双大括号拆分字符串的匹配异常问题

正则表达式匹配错误原因及修复方案

核心错误原因

你编写的正则出现问题的核心是对**正则字符集语法[]**的规则误解:

  • 方括号[]仅用于定义单个字符的匹配范围,内部写入的所有内容都会被解析为独立的单个字符,不会识别量词、多字符匹配规则。你写的[^\\}{2,2}]实际含义是「匹配1个不属于}、{、2、,这四个字符的字符」,完全不是你预期的「匹配所有不等于}}的多字符序列」。
  • 因此你的正则会在扫描到{或}时就停止前半段的匹配,仅会匹配到最后一段不含{/}的字符(hot、lazy)加上末尾的}},最终输出你看到的结果。

符合需求的实现方案

你要实现「匹配任意内容直到最近的}}为止」的逻辑,使用惰性匹配规则即可:

# R中正则写法,双反斜杠为R字符串的转义要求
pattern_test <- ".*?\\}\\}
teststring <- "{the {dog} is {hot}},{the {cat} is {lazy}}"
tmp <- unlist(str_extract_all(teststring, pattern_test))
tmp

运行后输出结果为 "{the {dog} is {hot}}"、",{the {cat} is {lazy}}",和你的预期一致。

内容的提问来源于stack exchange,提问作者William Dowd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 06:45:01