赞
踩
1定义:
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
2正则规则
普通字符:简单来说就是一对一的完全匹配
[]:匹配【】中的任意一个字符
[a-z]:匹配a~z之间的字符(所有消息字母)
[0-9]:匹配0~9之间的字符(所有数字)
[A-Z0-9]:匹配所有的大写字母和数字
[^abc]:匹配除abc外的所有字符,^代表非
. :点,匹配除'\n'换行符以外的任意字符
\d:匹配所有的数字,等价于[0-9]
\D:匹配所有的非数字,等价于[^0-9]
\w:匹配所有的数字、字母(中文)、下划线任意字符
\W:匹配所有的非字符的字符(\w的取反)
\s:匹配所有的空白符(\n、\t、\t、空格等)
\S:匹配所有的非空白符
\b:匹配单词,以标点、空格分割单词 ,使用的时候需要用r转义
\B:非词边界匹配
():将小括号内的内容当做一组数据一个整体去处理去匹配
*:前面的字符出现任意次
+:前面的字符出现至少一次
?:前面的字符出现至多一次
{m}:指定次数,m表示出现的次数
{m,}:至少指定次数
{m,n}:指定范围内的次数,m到n次之间
{,n}:至多n次,相当于{0,n}
正则的匹配默认都是贪婪的(最大限度的匹配)
优先级控制
import re
c = re.compile(r'a(hello|world)b')
s = c.search('aworldb')
if s:
print(s.group())
分组匹配
import re
c = re.compile(r'(\d+)([a-z]+)(\d+)')
s = c.search('shd327sjahdajhsd87892ehawksd')
if s:
print(s.group())
# 默认就是全部的匹配内容,等价于上式
print(s.group(0))
# 第一个()匹配到的内容
print(s.group(1))
print(s.group(2))
print(s.group(3))
print(s.span())
print(s.span(0))
print(s.span(1))
print(s.span(2))
print(s.span(3))
贪婪匹配
import re
# 取消任意多次的贪婪
# c = re.compile(r'a.*?b')
# 取消至少一次的贪婪
c = re.compile(r'a.+?b')
s = c.search('abdhsadjbsdjabs')
if s:
print(s.group())
匹配模式
import re
# 忽略大小写的匹配
# c = re.compile(r'hello', re.I)
# s = c.search('Hello world')
# 进行多行匹配,默认单行匹配
# c = re.compile(r'^hello', re.M)
# s = c.search('world \nhello')
# 做为单行处理 或 让 . 能够匹配 \n
c = re.compile(r'<div>.*?</div>', re.S)
# string = '<div>hello</div>'
string = '''<div>
hello
</div>'''
s = c.search(string)
if s:
print(s.group())
字符转义
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。