共281行
2026-04-08 18:17:54
一、需要转义的特殊字符(取消特殊含义)
这些字符本身是正则元字符,想匹配字面时要加 \ :
二、 \ 开头的特殊元序列(有特殊含义)
整个缓冲区/字符串开头(类似 ^ 但更强)三、字符集 [...] 内规则
四、Lisp 字符串双重转义(重点)
在 Elisp 代码字符串里, \ 本身也要转义,所以:
下面是Emacs 原生正则常用示例,直接在 isearch-forward-regexp (C-M-s)、 query-replace-regexp 、Elisp 里都能用。
统一说明:
一、基础匹配
regexp
abc 匹配 abc
^abc 行首 abc
abc$ 行尾 abc
^$ 空行
. 任意单个字符
.* 任意字符(贪婪)
.*? 任意字符(非贪婪,Emacs 支持)
二、字符类
regexp
[0-9] 数字
[a-zA-Z] 字母
[a-z0-9_] 小写字母+数字+下划线
[^0-9] 非数字
Emacs 专用简写:
regexp
[[:digit:]] 数字
[[:alpha:]] 字母
[[:alnum:]] 字母+数字
[[:space:]] 空白(空格/Tab/换行)
[[:blank:]] 空格+Tab
三、量词
regexp
a* a 0次或多次
a+ a 1次或多次
a? a 0或1次
a{3} a exactly 3 次
a{2,5} a 2~5次
a{3,} a 3次以上
四、分组与引用
regexp
<inline_LaTeX_Formula>abc<\inline_LaTeX_Formula> 分组
\1 引用第1组
<inline_LaTeX_Formula>ab<\inline_LaTeX_Formula>\1 匹配 abab
替换时常用:
五、或、词边界
regexp
abc|def abc 或 def
<foo> 完整单词 foo
\b 词边界(同 < >)
六、空白与换行
regexp
[ ]+ 一个或多个空格
[ \t]+ 空格或 Tab
\s- 空白(空格/Tab)
\n 换行
\r\n Windows 换行
删除行尾空格:
regexp
[ \t]+$
七、常用实用模板
regexp
-?[0-9]+(.[0-9]+)?
regexp
0x[0-9a-fA-F]+
regexp
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]+
regexp
https?://[^ ]+
regexp
//.*
regexp
/*.**/
regexp
"[^"]*"
regexp
[一-龥]
regexp
^$
^[\n]+
regexp
[a-zA-Z_][a-zA-Z0-9_]+(
八、Emacs 搜索替换常用套路
交换两个单词
查找: <inline_LaTeX_Formula>\w+<\inline_LaTeX_Formula> <inline_LaTeX_Formula>\w+<\inline_LaTeX_Formula>
替换: \2 \1
给数字加括号
查找: <inline_LaTeX_Formula>[0-9]+<\inline_LaTeX_Formula>
替换: (\1)
删除行首空格
查找: ^[ \t]+
替换:空