首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex只替换组

Regex只替换组
EN

Stack Overflow用户
提问于 2021-01-29 19:52:00
回答 1查看 66关注 0票数 0

我真的不明白regex是如何在球拍中工作的。如果我们有下面的代码

代码语言:javascript
复制
(regexp-replace #px"\\((.*)\\)\\/\\((.*)\\)"
                "(A + B)/(C)"
                "\\\\dfrac\\{\\1\\}\\{\\2\\}")

预期的结果应该是\dfrac{A + B}{C}。同样的工作原理是正确的,例如在python中。尽管如此,我还是得到了\dfrac(A + B)/(C){A + B(A + B)/(C)}(A + B)/(C){C(A + B)/(C)}。我甚至能感觉到这背后的一些逻辑。也许情况是match的行为,因为当应用到这个正则表达式和字符串时,regexp-match返回三个元素的列表:'("(A + B)/(C)" "A + B" "C")。或者我应该用某物代替regex-replace

我怎样才能实现我想要的,更重要的是,如何理解racket正则表达式背后的逻辑,而不推敲所有的文档?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 20:26:48

问题是替换字符串中的\\{{不需要在替换中转义,只需要在正则表达式中转义。文件上说:

如果insert中的\后面跟着一个数字、&\$以外的任何东西,那么\本身就被视为\0

因此,每个\\{被替换为整个匹配。

正确的呼叫是

代码语言:javascript
复制
(regexp-replace #px"\\((.*)\\)\\/\\((.*)\\)"
                "(A + B)/(C)"
                "\\\\dfrac{\\1}{\\2}")

请参阅演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65960883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档