正则表达式

正则表达式定义了字符串的模式。

正则表达式并不仅局限于某一种语言,但在每种语言中有细微的差别。

                      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、第四级  或   |

 

10A、用s///进行替换             s///只进行一次替换,无论后面还有地方能不能匹配上。

Perl中的s///操作类似于“查询并替换”。

s/被替换的内容/替换成/其它开关选项                          s/hello/hi/;   hello被hi替换掉。

 

B、使用/g进行全局替换          /g要求s///将不相重叠的所有匹配上的部分都进行替换。

它是不相重叠的,因为每一次新的匹配都是从最近匹配成功的地方之后开始进行的。

s/^\s+//;   将开头的空白去掉

s/\s+$//;   将结尾的空白去掉

s/^\s+|\s+$//g;   将开头,结尾的空白去掉。

11、split操作

 

12join函数

 

13

 

 

你可能感兴趣的:(正则表达式)