1.正则表达式对python对支持:
-
1.1普通字符
字母、数字、汉字、下划线、以及没有特殊定义的符号,都是"普通字符"。正则表达式中的普通字符,在匹配的时候,只匹配与自身相同的一个字符。例如:表达式c,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容是c;匹配到的位置开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)
match()函数
-
match(pattern, string, flags=0)
-
第一个参数是正则表达式,如果匹配成功,则返回一
个match对象,否则返回一个None
-
第二个参数表示要匹配的字符串
-
第三个参数是标致位用于控制正则表达式的匹配方式 如: 是否区分大小写,多行匹配等等
import re
s = 'python and java'
pattern = 'python'
result=re.match(pattern,s)
if result:
print(result.start()) # 0
print(result.end()) # 6
print(result.group()) #python
print(result.span()) #(0, 6)
else:
print('未有匹配')
表达式 |
匹配 |
. |
小数点可以匹配除了换行符 \n 以外的任意一个字符 |
| |
逻辑或操作符 |
[] |
匹配字符集中的一个字符 |
[^] |
字符集求反,也就是上面的反操作。尖号必须在方括号的最前面 |
- |
定义[ ]里的一个字符区间,例如[1-9] |
\ |
转义字符 |
() |
对表达式进行分组,将圆括号内的内容作为一个整体,并获得匹配的值 |
表达式 |
匹配 |
\r,\n |
匹配回车和换行符 |
\t |
匹配制表符 |
\ |
匹配斜杠\ |
^ |
匹配^字符 |
$ |
匹配$字符 |
. |
匹配小数点.字符 |
表达式 |
匹配 |
\d |
任意一个数字,0-9中的任意一个 |
\w |
任意一个字母或者数字或者下划线,也就是0-9,A-Z,a-z,_中的任意一个 |
\s |
空格,制表符,换页符等空格字符的其中任意一个 |
\D |
\d的反集,也就是非数字的任意一个字符,等同于[^\d] |
\W |
\w的反集,等同于[^\w] |
\S |
\s的反集,等同于[^\s] |
表达式 |
匹配 |
{n} |
表达式重复n次,比如\d(2)相当于\did,at3)相当于aaa |
{m,n} |
表达式至少重复m次,最多重复n次,比如ab(1,3可以匹配ab或abb或abbb |
{m,} |
表达式至少重复m次,比如w\d{2,}可以匹配a12,1111,M123等等 |
? |
匹配表达式0次或者1次,相当于{0,1},比如a[cd]?可以匹配a,ac,ad |
+ |
表达式至少出现1次,相当于{1,},比如a+b可以匹配ab,aab,aaab等 |
* |
表达式出现0次到任意次,相当于{0,},比如^*b可以匹配b,人航. |
等等 |
表达式 |
匹配 |
^ |
在字符串开始的地方匹配,符号本身不匹配任何字符 |
$ |
在字符串结束的地方匹配,符号本身不匹配任何字符 |
\b |
匹配一个单词边界,也就是单词和空格之间的位置,符号本身不匹配任何字符 |
\B |
匹配非单词边界,即左右两边都是\w范围或者左右两边都不是\w范围时的字符缝隙 |
贪婪与非贪婪模式
在重复匹配时,正则表达式默认总是尽可能多的匹配,这被称为贪婪模式。例如,针对文本dxxxdxxxd,表达式(d)(\w+)(d)中的\w+将匹配第一个d和最后一个d之间的所有字符xxxdxxx。可见,\w+在匹配的时候,总是尽可能多的匹配符合它规则的字符。同理,带有?、*和{m,n}的重复匹配表达式都是尽可能地多匹配.
功能 |
表达式 |
数字 |
^[0-9]*$ |
n位的数字 |
^\d{n}$ |
至少n位的数字 |
^\d{n,}$ |
零和非零开头的数字 |
^(0 | [1-9][0-9]*)$ |
有两位小数的正实数 |
^[0-9]+(\.[0-9]{2})?$ |
非零的负整数 |
^-[1-9]\d*$ |
非负浮点数 |
^\d+(\.\d+)?$ |
浮点数 |
^(-?\d+)(\.\d+)?$ |
2.re模块常用方法
方法 |
描述 |
返回值 |
compile(pattern,[flags]) |
将包含正则表达式转化为对象 |
re对象(可以直接执行match,search等方法) |
search(pattern,string,[flags]) |
在字符串中查找 |
返回第一个匹配对象或者none |
match(pattern,string,[flags]) |
在字符串的开始处匹配模式 |
返回字符串开头匹配到的对象或者none |
split(pattern,string,[maxsplit=0,flags]) |
根据模式的匹配项来分割字符串 |
分割后的字符串列表 |
findall(pattern,string,[flags]) |
列出字符串中模式的所有匹配(不使用group方法取值) |
所有匹配到的的字符串列表 |
sub(pat,repl,string,[count=0,flags]) |
将字符串中所有的pat的匹配项用repl替换 |
完成替换后的新的字符串 |
flag匹配模式
匹配模式 |
描述 |
re.I |
不区分大小写 |
re.M |
开启多行模式 |