未名Q

此生若能得幸福安稳,谁又愿颠沛流离。

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::

目录

第一节     正则表达式... 1

第二节     Word的正则表达式... 4

 

第一节          正则表达式

clip_image002

对于字符串“a5”,是由两个字符“a”、“5”以及三个位置组成的,这一点对于正则表达式的匹配原理理解很重要。

A        字符组

表达式

说明

能被匹配

不被匹配

[abc]

匹配其中一个。那怕是符号字符。

ac

dA

[a-z]

匹配任意一个小写字母,限升序。

ax

AX

[A-Z]

匹配任意一个大写字母,限升序。

AX

ax

[0-9]

匹配任意一个数字,限升序。

等价于[0123456789]

01

ax

[\u4e00-\u9fa5]

表示任意一个汉字

a

[a-zA-Z0-9]

匹配任意一个字母或数字

A0

+@_

[^a1<]

匹配除此之外的字符(排除)

B2

1<

[^a-z]

表示除小写字母外的任意一个字符

AB

ab

.

匹配除换行符\n的任何单个字符。

 

 

B        定位符

字符

描述

举例

^

从行首位置开始匹配。

^The:行开头为the/THE,但athe不是。

$

从行未位置检查匹配。

end$:行结尾为end/END,但enda不是。

\b

\B

是否匹配一个词边界,各软件定义不一样的。

Notepad++中只有\b且和普通查找无区别。

C         限定选择符

字符

说明

举例

?

匹配前面的子表达式0次或1次。

{0,1}

ab?匹配aababb

*

匹配前面的子表达式0次或任意多次。{0,}

[^a]*:匹配bca,不是aab

+

匹配前面的子表达式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风格的预定义字符类

 

clip_image004

E         非打印字符

字符

描述

\cx

匹配由x指明的控制字符。

例如\cM匹配一个Control-M或回车符,x的值必须为A-Za-z之一。

\f

匹配一个换页符。等价于\x0c\cL

\n

匹配一个换行符。等价于\x0a\cJ

\r

匹配一个回车符。等价于\x0d\cM

\t

匹配一个制表符。等价于\x09\cI

\v

匹配一个垂直制表符。等价于\x0b\cK

F         转义字符

如果在正式表式中查找(正式表达工自身字符)时,前缀转义字符即可。

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

转义字符:

\

示例

匹配$字符:\$       匹配*字符:\*       匹配+字符:\+

匹配.字符:\.         匹配[字符:\[         匹配?字符:\?

匹配/字符:\/        匹配\字符:\\        匹配{字符:\{

例外

[]中不需要转义字符。

因为不会这样书写:^写成[^]d-z写成[d-]

/:在某些语言中表示正则表达式的开始或结束,而VBScript中使用“”做边界符。

G        模式修饰符

模式修饰符的作用是设定模式。也就是规定正则表达式应该如何解释和应用。

不同的语言都有自己的模式设置,PHP中的主要模式如表所示:

clip_image005

H        捕获组

表达式

说明

(Expression)

普通捕获组,将子表达式Expression匹配的内容保存到以数字编号的组里

(?<name> Expression)

命名捕获组,将子表达式Expression匹配的内容保存到以name命名的组里

\1\2

对序号为12的捕获组的反向引用

\k<name>

对命名为name的捕获组的反向引用

查找:(t|T)(h|H)   替换:\1(abc)\2

描述:th/TH单词替换为tabch/TabcH

第二节          Word的正则表达式

clip_image007clip_image009

示例文:

A123

B123

A234

A123

And

结果:

A123

B123

A234

And

查找:

(<[!^13]*^13)(*)\1

替换:

\1\2

释义:

()为表达式,<为单词开头,[!^13]为排除分段符^p\1为第一个表达式

 

在正则表达式中以^13代替^p

 

MS-HELP URL

posted on 2018-02-01 10:20  未名Q  阅读(192)  评论(0编辑  收藏  举报