目录
第一节 正则表达式... 1
第二节 Word的正则表达式... 4
第一节 正则表达式
对于字符串“a5”,是由两个字符“a”、“5”以及三个位置组成的,这一点对于正则表达式的匹配原理理解很重要。
A 字符组
表达式
说明
能被匹配
不被匹配
[abc]
匹配其中一个。那怕是符号字符。
a或c
d或A
[a-z]
匹配任意一个小写字母,限升序。
a或x
A或X
[A-Z]
匹配任意一个大写字母,限升序。
A或X
a或x
[0-9]
匹配任意一个数字,限升序。
等价于[0123456789]
0或1
a或x
[\u4e00-\u9fa5]
表示任意一个汉字
汉
a
[a-zA-Z0-9]
匹配任意一个字母或数字
A或0
+或@或_
[^a1<]
匹配除此之外的字符(排除)
B或2
1或<
[^a-z]
表示除小写字母外的任意一个字符
A或B
a或b
.
匹配除换行符\n的任何单个字符。
B 定位符
字符
描述
举例
^
从行首位置开始匹配。
^The:行开头为the/THE,但athe不是。
$
从行未位置检查匹配。
end$:行结尾为end/END,但enda不是。
\b
\B
是否匹配一个词边界,各软件定义不一样的。
Notepad++中只有\b且和普通查找无区别。
C 限定选择符
字符
说明
举例
?
匹配前面的子表达式0次或1次。
{0,1}
ab?:匹配a或ab或abb。
*
匹配前面的子表达式0次或任意多次。{0,}
[^a]*:匹配b或ca,不是a或ab。
+
匹配前面的子表达式1次或任意多次。{1,}
\d\s+\d:两个数字中间至少有一个以上的空白字符。
|
多个子表达式之间取“或”的关系;
如是字符串可书写任意长度。
(t|T)(h|H)等价[tT][hH]
等价(Th|tH|th|TH)
Notepadd++不分大小写
( )
要匹配的表达式。
获取后可以反向引用(见捕获组)。
()里可以放[]{},但[]{}里不能放()
/^[a-zA-Z]{1}([a-zA-Z0-9]|[.@_]){4,19}$/
以字母开头,可带数字小数点@下划线的长度5-20字符串的行。
^[0-9]{1,20}$:仅1-20位的数字行。
[ ]
定义匹配的字符范围,只能是单个字符。
{ }
前面子表达式的匹配长度。
{m}
匹配前面的子表达式m次
\d{3}相当于\d\d\d
(abc){2}相当于abcabc
{m,n}
匹配前面的子表达式最少m次,最多n次
\d{2,3}匹配2-3位的数字。
{m,}
匹配前面的子表达式至少m次
[a-z]{8,}至少8位以上的字母
D 预定义字符集
小写是匹配,大写是不匹配。w字母数字下划线,d数字,s空白字符。
字符
描述
\w
任意一个字母或数字或下划线,相当于[a-zA-Z0-9_]。
\W
\w取反,相当于[^a-zA-Z0-9_]。
\d
任意一个数字,相当于[0-9]。
\D
任意一个非数字字符,\d取反,相当于[^0-9]。
\s
任意空白字符,相当于[\r\n\f\t\v]。包含空格字符。
\S
任意非空白字符,\s取反,相当于[^\r\n\f\t\v]。
1). POSIX风格的预定义字符类
E 非打印字符
字符
描述
\cx
匹配由x指明的控制字符。
例如\cM匹配一个Control-M或回车符,x的值必须为A-Z或a-z之一。
\f
匹配一个换页符。等价于\x0c和\cL。
\n
匹配一个换行符。等价于\x0a和\cJ。
\r
匹配一个回车符。等价于\x0d和\cM。
\t
匹配一个制表符。等价于\x09和\cI。
\v
匹配一个垂直制表符。等价于\x0b和\cK。
F 转义字符
如果在正式表式中查找(正式表达工自身字符)时,前缀转义字符即可。
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
转义字符:
\
示例
匹配$字符:\$ 匹配*字符:\* 匹配+字符:\+
匹配.字符:\. 匹配[字符:\[ 匹配?字符:\?
匹配/字符:\/ 匹配\字符:\\ 匹配{字符:\{
例外
在[]中不需要转义字符。
因为不会这样书写:^写成[^]、d-z写成[d-]
/:在某些语言中表示正则表达式的开始或结束,而VBScript中使用“”做边界符。
G 模式修饰符
模式修饰符的作用是设定模式。也就是规定正则表达式应该如何解释和应用。
不同的语言都有自己的模式设置,PHP中的主要模式如表所示:
H 捕获组
表达式
说明
(Expression)
普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里
(?<name> Expression)
命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里
\1\2
对序号为1和2的捕获组的反向引用
\k<name>
对命名为name的捕获组的反向引用
查找:(t|T)(h|H) 替换:\1(abc)\2
描述:将th/TH单词替换为tabch/TabcH
第二节 Word的正则表达式
示例文:
B123
A234
A123
And
结果:
A123
B123
A234
And
查找:
(<[!^13]*^13)(*)\1
替换:
\1\2
释义:
()为表达式,<为单词开头,[!^13]为排除分段符^p,\1为第一个表达式
在正则表达式中以^13代替^p