基于Rust正则的sd工具中命名捕获组后接字符串如何正确引用?
解决方法
直接使用${组名}的格式显式定界命名捕获组即可,替换字符串中你需要把$cgB改成${cg}B,就能实现预期效果,不会引入任何额外字符。
验证示例:
echo 'abc' | sd -p '(?P<cg>b)' '${cg}B' # 输出: abBc # 完全符合预期
原理解释
Rust正则的替换字符串语法规则中,$开头的捕获组引用会默认将后续连续的字母、数字、下划线识别为组名的一部分。你之前尝试的<>尖括号是匹配阶段定义命名组的语法,替换阶段的定界符需要使用{}花括号,显式圈定组名的范围后,后续的普通字符就不会被误判为组名的一部分了。
内容的提问来源于stack exchange,提问作者balupton
相关产品推荐
相关产品推荐

