使用re-builder交互式使用正则
比如buffer中有一个字符串
abcd 3
运行命令:
M-x:re-builder
会出现一个小buffer,在双引号里面输入正则表达式d ,上面有字符串的buffer马上高亮d字符,如果输入3,则高亮3字符。
特殊字符
参考文档:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Regexp-Special.html#Regexp-Special
'.' 代表任意一个字符(除了换行符),因此"a.c"能够匹配abcd 3中的abc
'*' 代表前面的字符(串)可以重复>=0次
如果*用在最前面,只能代表是普通字符,同样情况适用于+和?,一句话,特殊字符如果用在不可能出现的场合,只能被当作普通
字符
'+' 代表前面的字符(串)必须出现至少一次
比如"bc+d"匹配上面的字符串abcd 3
'?' 代表前面的字符(串)出现一次或者0次
'^' 匹配字符串开头
'&' 匹配字符串结尾
[...] 里面可以包括若干字符,只要匹配其中之一即可
比如字符串abcd 3 ab
用正则"[bc]",匹配到三个,分别是b c 和最后一个b
[^...] 表示不能是[]里面包含的任何字符
\ 代表后面的特殊字符在这里只是普通字符
注意,如果要匹配字符串中的\字符,需要四个\,比如:abcd 3 ab\ ef
正则表达式写法:"\\\\"
首先因为ELisp字符串写法中,双引号里面的\不显示,要想显示出来必须是两个\
然后正则表达式语法中\是特殊字符,\\才能表示一个\,
因此"\\\\"就是代表逻辑上的正则表达式"\\",因此也就匹配了字符\
'*?' '+?' '??' 和'*' '+' '?' 功能相近,只是非贪婪匹配,只匹配最合适的一个。