首页 > 代码库 > python之正则表达式

python之正则表达式

1)

用管道符号(|)匹配多个正则表达式

举例 

at | home     匹配 at, home

 

2)

匹配任意一个单个的字符(.)

举例

f.o  匹配在“f”和"o"中间的任何字符,如fao, f9o, f#o等

 

3)

从字符穿的开头或结尾或单词边界开始匹配(^/$/\b\B)

\b匹配的模式是一个单词边界,与之对应的模式一定在一个单词的开头;

\B只匹配出现在一个单词中间的模式,即不在单词边界上的字符。

举例

^From  匹配任何以From开始的字符串

/bin/tcsh$ 匹配任何以/bin/tcsh结束的字符串

^subject: hi$ 匹配仅由subject: hi组成的字符串

the   任何包含有“the”的字符串

\bthe 任何以“the”开始的字符串

\bthe\b 仅匹配单词“the”

 

4)创建字符类([])

使用方括号的正则表达式会匹配方括号里的任何一个字符。

方括号只有逻辑或的功能。

举例:

b[aeiu]t  匹配字符串 bat, bet, bit, but

[cr][23][dp][o2] 匹配字符串有16个组合,先[cr]选一个,接着[23]选一个,......,最后[o2]选一个。

 

5)指定范围(-)和否定(^)

方括号里一对符号中间的连字符(-)用来表示一个字符的范围。如[0-9],匹配十进制数

左方括号后第一个字符是上箭头符号(^),表示不匹配制定字符集里的任意字符。如[^aeiou],匹配一个非元音字符

 

6)使用闭包操作符(*, +, ? {})实现多次出现/重复匹配

*:  匹配它左边那个正则表达式出现0次或0次以上的情况;

+: 匹配它左边那个正则表达式至少出现一次的情况;

?:   匹配它左边那个正则表达式模式出现0次或一次的情况。

{}: 如{M}表示匹配M次出现的情况,{M,N}表示匹配M次到N次出现的情况。

[dn]ot? 匹配最多有一个字符“t”,即 do, no, dot, not.

[0-9]{15, 16} 匹配15或者16位数字,例如信用卡号码

</?[^>]+> 匹配所有合法的HTML标签的字符串,即<...>、</...>。

 

7)特殊字符   

一些特殊字符可以用来代表字符集合。

\d:  表示[0-9]

\w: 表示[A-Za-z0-9]

\s:  表示空白字符

\D:  表示非十进制数字的字符,即[^0-9]

举例:

\w+-\d+ 表示一个字母和数字组成的字符串和至少一个数字,例如:ABCD-9

\d{3}-\d{3}-\d{4} 例如 800-555-1212

\w+@\w+\.com 例如xxxx@yyyy.com

 

8)用圆括号(())组建组

我们不仅想知道是否整个字符串匹配正则表达式,还想在匹配成功时取出某个特定的字符串或子字符串。

()的功能:

对正则表达式进行分组

匹配子组

举例:

m = re.match(‘(a(b))‘, ‘ab‘) 两个子组

m.group() 所有匹配部分

m.group(1) 匹配的子组1 输出‘ab’

m.group(2) 匹配的子组2 输出‘b‘

m.groups() 所有匹配的子组的元组 输出 (‘ab‘, ‘b‘)

 

python之正则表达式