正则表达式仅替换组

Regex replace only groups

我真的不明白正则表达式在球拍中是如何工作的。 前提是我们有下面的代码

(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)}。我什至能感觉到这背后的一些逻辑。也许情况是匹配的行为方式,因为 regexp-match returns 应用于此正则表达式和字符串时的三个元素列表:'("(A + B)/(C)" "A + B" "C")。或者也许我应该使用 sth 而不是 regex-replace?

我怎样才能实现我想要的,更重要的是,如何在不阅读所有文档的情况下理解球拍正则表达式背后的逻辑?

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

If a \ in insert is followed by anything other than a digit, &, \, or $, then the \ by itself is treated as [=18=].

所以每个 \{ 都会被整个匹配替换。

正确的叫法是

(regexp-replace #px"\((.*)\)\/\((.*)\)"
                "(A + B)/(C)"
                "\\dfrac{\1}{\2}")

DEMO