[英]Emacs regexp frustration
有人可以解釋為什么這個Emacs regexp
find_class \(\w+|([^)]+)\) \(\w+|([^)]+)\)
這些行中的任何一行都不匹配?
let _, scn, _ = find_class (obj :: cs) c in scn
aux (find_class (obj :: cs) scn) (cn :: desc)
let _, scn, ms = find_class c cs in
看起來很簡單:我正在尋找函數的調用,其中參數可以顯示為單個單詞或帶括號的arbirary字符串。 當我將一個等效的表達式( find_class (\\w+|\\([^)]+\\)) (\\w+|\\([^)]+\\))
)插入Ruby時,它會做我想要的,但不是這里。 我錯過了什么嗎?
我發現Emacs的regexp在實際使用中非常麻煩,我正在重新考慮我選擇的編輯器。 如果有一種合理的方法來改進這一點(即更簡潔的語法,更多的字符類),我很想聽到它,但我還沒有找到任何東西。
我想你需要\\|
在emacs正則表達式中實現與|
相同的效果 在Ruby中。
Re:很麻煩,看看Emacs的regexp文檔會有所幫助:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-of-Regexps.html
第3節“Regexp反斜杠”包含了nhahtdh已經指出的問題的答案。 不要忘記Emacs的正則表達式語法早於POSIX標准。
此鏈接顯示Emacs正則表達式與大多數其他正則表達式的不同之處:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.