正则表达式定义了字符串的模式。
正则表达式并不仅局限于某一种语言,但在每种语言中有细微的差别。
Java和Perl中正则表达式很相似。
目录
Perl
1、作用
2、元字符
3、量词
4、分组
5、字符类及简写
6、可选的修饰符
7、锚定
8、绑定操作符
9、优先级
10、s///
11、split
12、join
Java
1、
2、
一、Perl
1、在Perl中正则表达式通常被称为模式:某个模板是否匹配某个字符串。
它只有一个任务:查找某个字符串,返回“匹配”或者“不匹配”。
2、元字符(metacharaters)
是一种特殊的字符,在正则表达式中具有特殊的含义。
a、点(.)是通配符,它可以匹配任何单个的字符,但是不包括换行符。
元字符前使用反斜杠将使它变成普通的字符。如 3\.14159 中的.只是普通的点而已,并不是通配符。
b、反斜杠(\)。如果需要使用反斜杠,写法: guo//guo.o [即 guo/guo任意一个字符o]
3、量词
星号(*) 表示匹配前一项0次或多次
.* 任意的字符串都能被匹配上 (除过换行符)
加号(+) 表示匹配前面一项一次或多次
问号(?) 表示匹配前面一项一次或0次
4、分组 用括号表示分组
选择符 (|) 即一个竖线 ,这种用法通常被称为 or,意思是匹配左边的或者右边的。 /guo|shan/
5、字符类
是方括号中的一列字符,可以匹配上方括号内出现的任意单个字符。
[abcdsl] 可以匹配方括号内六个字母中任意一个。
[a-zA-Z] 可以匹配26个大小写字母任意一个。
[^slg] 表示匹配除过这3个字符外的任意单个字符。
[^a\-e] 表示匹配除过a-e之外的任意字符
字符类的简写
数字字符 \d 代表 [0-9]
word字符 \w 代表 [A-Za-z0-9_]
空格 \s
[^\d] 非数字字符 [\D]
[^\w] 非word字符 [\W]
[^\s] 非空白字符 [\S]
[\d\D] 表示任何数字和非数字,即任意字符
6、可选的修饰符
有几个修饰符,通常叫做标记,可以加在正则表达式后面来改变其默认的行为。
/i 表示不区分大小写
/s 表示匹配任何字符 包括换行符
/x 表示添加空格
可选的修饰符可结合 比如 /is 即 /i 和 /s
7、A、锚定
默认情况下,如果模式在字符串开头没能匹配上,它会顺着字符串继续匹配下去。
如果使用了锚定则可以要求模式在特定的位置进行匹配。
^ 表示在字符串的开头处匹配,
$ 表示在字符串结尾处匹配。
即/^guo/只匹配字符串开头的部分, 比如 guos,不会匹配上 danguos。
/rose$/ 只匹配字符串的结尾部分, 比如 catrose,不会匹配上 catrosewa。
/^\s*$/ 它将匹配一个空行。
B、词锚定 是对单词使用的 \b
如 /\bmeng\b/可以匹配上meng,但是不能匹配上 ameng,mengg。
非词界锚定 \B 它将在任何非 \b匹配的点上进行匹配。
比如/\bguo\B/ 可以匹配上 guoaa,guoing,guoshan,但不能匹配guo,auguo。
8、绑定操作符 =~
使用绑定操作符将告诉Perl将右边的模式在左边的字符串上进行匹配。
9、优先级
A、第一级 括号 ()
B、第二级 数量词 * + ?
C、第三级 锚定
D、第四级 或 |
10、A、用s///进行替换 s///只进行一次替换,无论后面还有地方能不能匹配上。
Perl中的s///操作类似于“查询并替换”。
s/被替换的内容/替换成/其它开关选项 s/hello/hi/; hello被hi替换掉。
B、使用/g进行全局替换 /g要求s///将不相重叠的所有匹配上的部分都进行替换。
它是不相重叠的,因为每一次新的匹配都是从最近匹配成功的地方之后开始进行的。
s/^\s+//; 将开头的空白去掉
s/\s+$//; 将结尾的空白去掉
s/^\s+|\s+$//g; 将开头,结尾的空白去掉。
11、split操作
12、join函数
13、