正则表达式

2020-07-27  本文已影响0人  livein80

1.正则表达式对python对支持:

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 开启多行模式
上一篇下一篇

猜你喜欢

热点阅读