2016-11-26 65 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

相關問題