笔记:正则表达式(三)模式修正符

模式修正符也属于非捕获组,他们之间可以组合搭配,起到限定一些方式作用,使用匹配更精准。

模式修符如下表:

模式修正符

                                                                              说   明

i

表示在和模式进行匹配时不区分大小写

g表示全局匹配

m

多行匹配,使用^$时起作用,表示任何一行都可以和正则表达式开始或结束,但只匹配第一个,加g匹配所有多行

s

表示元字符中的"."可以和\n(换行符号)匹配,默认是不能换行符号匹配。

x

表示模式中的忽略空格符

e

配合函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行。

A

强制从目标字符串开头匹配,相当于元字符^

Z

强制以目标字符串结尾匹配,相当于元字符$

D

模式中$仅匹配目标字符串结尾,不可与换行符\n匹配,无它可以匹配换行符结尾的字符串。

U

只匹配最近的一个字符串;不重复匹配

 

下面分别举例说明:

1:i 不区分大小与,如re.findall('abc','abc Abc ABc ABC aBc aBC abC AbC',re.I) 全部匹配。

2:m 可以匹配多行字符,即字符串中包括换行也可以,如: 字符串 ”bacd\nabde\nabgh",匹配规则:/ab/ ,没有匹配字符串,规则:/ab/m 可以匹配到第二行,第三行其实也是相符的,但单加上m只匹配到第一条,在python中使用re.findall就匹配全部,这个参数在此函数中不起作用。

3:g 全局匹配,上面规则改成:/ab/mg 就会匹配所有符合条件的字符,无论多少行,上面例子可以匹配后两行,python无些参数,本身就是全局搜索。

4:S 可以匹配换行符。如: 字符串 ”bacd\nabde\nabgh",re.findall('cd.',s),没有匹配字符串,改成:re.findall('cd.',s,re.S),就可以匹配'cd\n',也就是加了这个修正符,可以将\n视为一个换行符号,否则将视为普通字符。

5:X,忽略模式中空格,如: 字符串 ”bacd\nabde\nabgh",re.findall(' c d',s),没有匹配的字符串,改成:re.findall(' c d',s,re.X),就和'cd\n'中的cd匹配成功。

6:A 强制从头开始匹配。如: 字符串 ”bacdefg", /ac/gi能匹不个字符,因为不是ac开头的,python中的re.A参数表示的是ascii码,在python中本身就是从头搜索的,所以无些参数。

7:Z 强制结尾匹配,/ab/Z,只能匹配字符串“efgab",而不能匹配"abcdef"因为不是以ab结尾的,python中fqhx无此参数。

8:D 不可匹配结尾的换行符。/ef$/D不能匹配"abcdef\n",而只能匹配"abcdef",去除/D修正符,可以匹配两个字符串。

9:U 只匹配最近一个字符串,也就是第一次出现的,python中的re.search()本身就是搜索到第一次的,在python中re.U是指指定的目标串是Unicode字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值