Python正则小结

字符匹配

. 任意字符(除了换行)
\w 字母数字及下划线
\d 数字
\s 空白符

\W 非字母数字及下划线
\D 非数字
\S 非空白符

\t, \n, \r 制表符,换行符,退格符

长度匹配

*   任意个字符
+  至少一个字符
?   0或1个字符
{n,m} n-m个字符
{n}  表示n个字符

范围控制

范围表示 [0aA] [0-9a-zA-Z] [^0-9a-z] ## 注:只匹配一个

\b 匹配单词首或尾边界,以 \W 为边界
\B [^b],以 \w 为边界

或者 |

某种开头 ^

某种结尾 $

分组()

特殊字符,使用 \ 进行转义

匹配模式

默认贪婪模式,匹配尽可能多的字符
使用 ? 变为非贪婪模式:+? *?

默认为单行搜索,不匹配换行符

python 正则模块 re

re.match(pattern, str, flags=0) # 从字符串开头匹配
re.search(pattern, str, flags=0) # 从任意位置搜索,返回第一次匹配的结果
flags 有:
- re.I(re.IGNORECASE)  忽略大小写
- re.L(re.LOCALE)    使 \w,\W,\b,\B,\s 本地化
- re.M(re.MULTILINE)  多行模式,匹配换行符,影响 ^ 和 $
- re.S(re.DOTALL)    使 . 匹配所有字符,包括换行
- re.U(re.UNICODE)   按Unicode标准来考虑 \w, \W, \b, \B, \d, \D, \s, \S
- re.X(re.VERBOSE)  忽略空白符(除非在字符串或’\’之后),可以使用’#’号注释,不过不能在字符串或’\’之后

RegexObject.group(num=0)  # 返回匹配的以及分组的结果
RegexObject.groups()     # 返回分组的结果

m=re.match(r’^(\d{3})-(\d{3,8})$’, ‘010-12345’)  # search 用法一样
m.group()  # 010-12345
m.group(0)  # 010-12345
m.group(1)  # 010
m.group(2)  # 12345
m.groups()  # (‘010’,’12345’)

re.findall(pattern, str, flags=0)  # 搜索方式和search相同,不过以列表返回全部搜索结果
re.finditer(pattern, str, flags=0)  # 类似findall,不过返回一个迭代对象

re.sub(pattern, repl, string, count=0, flags=0) # 字符串替换,按 pattern 在 string 中搜索,搜索到的替换为 repl

re.split(pattern, str, flags=0) # 以正则模式进行分割

编译

在python中使用正则表达式时,re模块会先编译正则表达式,再用编译的正则表达式去匹配字符串

re.compile() # 预编译,出于效率的考虑,以重复使用预编译的正则表达式

re_telphone = re.compile(r’^(\d{3})-(\d{3,8})$’)
re_telphone.match(‘010-12345’).groups()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值