目录
第一节 正则表达式
第二节 Word的正则表达式
第一节 正则表达式
对于字符串“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 |
欢迎转载,但请注明内容的来源或URL;
“[转]”篇章,必须保留原始来源且勿添加本blog指向。