Regex emacs lisp是否有改进此正则表达式的方法

Regex emacs lisp是否有改进此正则表达式的方法,regex,emacs,Regex,Emacs,我希望这个正则表达式将每个术语放在花括号内。但如果有一个带有转义参数的项,则将该项与下一项连接起来 (replace-regexp-in-string "{ " "{" (replace-regexp-in-string "}{" "} {" (replace-regexp-in-string "\\(.*?_.\\)" "{\\1}" "\Delta y_t u_t"))) 期望输出 y_t a_t ==> {y_t} {a_t} \Delta y_t a_t ==>

我希望这个正则表达式将每个术语放在花括号内。但如果有一个带有转义参数的项,则将该项与下一项连接起来

(replace-regexp-in-string "{ " "{"
(replace-regexp-in-string "}{" "} {" (replace-regexp-in-string     
"\\(.*?_.\\)" "{\\1}"  "\Delta y_t u_t")))
期望输出

y_t a_t ==> {y_t} {a_t}
\Delta y_t a_t ==> {\Delta y_t} {a_t}

试试这个,你可能需要调整反斜杠的数量

(replace-regexp-in-string "}{" "} {" (replace-regexp-in-string     
"\(\(?:\\\w+ \)?\w+\)" "{\\1}"  "\Delta y_t u_t")))
你可以试试

(replace-regexp-in-string
    "\\(\\(?:\\\\[^ \t]+[ \t]\\)?[^ \t]+\\)" "{\\1}" "z_t \\Delta y_t x_t")

使用与上一个答案相同类型的可选捕获组。

谢谢,但我使用的是elisp,我认为不适用相同的正则表达式。您似乎有嵌套组。这通常是如何工作的?就我所知?:在emacs中不起作用,因此不需要它。但主要的问题是要捕获反斜杠。谢谢你的邀请try@DJJ对我有效?:表示组在emacs中不被捕获(与正常情况类似),但字符串应为“\\Delta y\u t x\u t”