emacs regexp-builder在replace-regexp中不起作用

sec*_*ond 22 regex emacs

我有一个包含文本的emacs缓冲区

a1b2c3
Run Code Online (Sandbox Code Playgroud)

使用正则表达式构建器,我创建正则表达式

"b\\(2\\)"
Run Code Online (Sandbox Code Playgroud)

并且可以看到匹配突出显示(b2,其中2为不同颜色).

但是,当我粘贴表达式时replace-regexp,我得到0个匹配.有和没有引号.得到一个我需要使用的比赛

b\(2\)
Run Code Online (Sandbox Code Playgroud)

我猜这里有一些逃避行为,但我肯定一定是做错了.不得不手动逃跑似乎打败了一半.

Gil*_*il' 29

regexp-builder可以用几种语法显示正则表达式.默认情况下,它使用适合放入Emacs Lisp源(read语法)的语法,因此regexp放在双引号之间,每个反斜杠都加倍.要进行交互式使用,请string使用C-c C-i(reb-change-syntax)选择语法.

  • 至少在Emacs 24.2中,选择`string`不会改变被`Cc Cw'复制的内容.您需要手动选择引号之间的表达式以获得可用于`replace-regexp`的版本. (5认同)
  • 我对这个答案感到困惑; 考虑一下:`string [5string]'现在regexp-builder将"5"("任何以开头尖括号开头的数字")与"\\ [[0-9]"匹配.现在如果我`Mx查询替换\\ [[0-9] RET plop'我什么都没得到.我试过\\ [\ [0-9 \](也在建设者工作),没有.你没有说明我应该在哪里键入`Cc Ci':在regexp-builder中,在使用迷你缓冲区时,在其他地方?原来它是在regexp-builder中,但它为我提供了4种选择(读取,rx,sregex,字符串),我应该选择哪一种**以便emacs了解它自己的正则表达式语法?** (2认同)