2016-11-26 94 views
1

我希望这个正则表达式将每个术语放在大括号内。但是,如果没有与逃生参数项串连这个词与下一届emacs lisp有没有办法改善这个正则表达式

(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} 

回答

0

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

(replace-regexp-in-string "}{" "} {" (replace-regexp-in-string  
"\(\(?:\\\w+ \)?\w+\)" "{\\1}" "\Delta y_t u_t"))) 
+0

谢谢,但我使用elisp,我不认为相同的正则表达式适用。 – DJJ

+0

尝试更新后的答案可能有效 –

+0

不,它无法按预期工作。 – DJJ

1

您可以尝试

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

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

+0

似乎你有嵌套组。这一般如何工作?据我所知,?:在emacs中不起作用,所以不需要。但主要的问题是也要捕获反斜杠。谢谢你的试用 – DJJ

+0

@DJJ对我有用,?:表示组在emacs中是非捕获的(与普通的一样) – jenesaisquoi

+0

字符串应该是“\\ Delta y_t x_t”,尽管 – jenesaisquoi

相关问题