标签:编码 表示 模式 osc ESS 多次 3.1 mac net
正则在python中是以c实现的,在后续的爬虫等工作都需要使用到该模块,主要搜索文本的内容。搜索非常速度。
https://www.regexpal.com/ 两个个在线的正则表达式,可以用来借鉴
下面是列举出来一些常用的,更多的使用help(re)查看。
正则默认都是贪婪匹配的(尽可能的多,贪吃)。还有一种懒惰匹配(取到最少那次就不干活了)。
?是一个非常有意思的规则。 自己单独的时候,表示0或多个字符。
和贪婪的组合在一起的时候,就变成了控制贪婪变成懒惰匹配了。. 代表任意字符,但是除了换行符
# 开头和结尾
^ 代表字符串的开始
$ 代表字符串的结尾 ,如果是多行文本,默认只匹配第一行的结尾。
# 任意字符,贪婪匹配
* 匹配0或多次,贪婪匹配,取到满足的最多
+ 匹配1或多次,贪婪匹配,取到满足的最多
? 匹配0或多次,贪婪匹配,取到满足的最多
?还可结合*,+,?做懒惰匹配
# ?组合-懒惰匹配
*? +? ?? 前面的任意字符,得到最少的那次
# 指定次数 匹配
{m} 匹配m次。
{m,n} 匹配m到n次,和切片的使用方法一致。也是贪婪匹配
{m,} m到无穷
{n,} 0 到n次
a{m} 匹配6个a
{m,n}? 更改成懒惰,得到最少的那次匹配
# 分组
() 下面会详细的讲解
# 字符集
[] [0-9] 代表 1到9
[a-z] 代表 a到z
[a-zA-z0-9] 所有的字符和数字
[abc] 匹配任意一个
[^9] 除了9以外其他的所有
# 或
| 常常搭配字符集使用,[a|b]:找到a了,就不找b了,反之相同。
python的正则规则是以引号 包围的,里面的的一些字符 要代表本身的含义,或 转成其他意思,就需要这个\。
红色的为常用的。
\. 默认.是代表任意字符,我们可以让他转义为。本身
\A 只在字符串开头进行匹配。
\b 匹配位于开头或者结尾的空字符串
\B 匹配不位于开头或者结尾的空字符串
\d 匹配任意十进制数,相当于 [0-9]
\D 匹配任意非数字字符,相当于 [^0-9]
\s 匹配任意空白字符,相当于 [ \t\n\r\f\v]
\S 匹配任意非空白字符,相当于 [^ \t\n\r\f\v]
\w 匹配任意数字和字母,相当于 [a-zA-Z0-9_]
\W 匹配任意非数字和字母的字符,相当于 [^a-zA-Z0-9_]
\Z 只在字符串结尾进行匹配
\number 在分组中使用,类似占位符
方法1:利用compile方法,生成一个re对象,好处是可以多次使用
import re
res = re.compile(‘\d{3}‘) # 第一步,把正则字符串进行编码,返回一个re对象,保存为一个常量
result = res.search(‘I am hui 123‘) # 第二步,把compile返回的对象,去匹配字符串,返回一个mactch对象
result.group() # 第三步,使用match对象的group方法,返回实际匹配的对象
方法2:直接使用re的方法,对于单一的使用比较方便,如果每次使用,每次都要定义。
import re
x = re.search(‘\d{3}‘, ‘I am hui 123‘) # 直接使用match对象
x.group() # 使用match对象的group方法,返回实际匹配的对象
compile(pattern, flags=0)
Compile a regular expression pattern into a regular expression object re.compile(pattern, flags=0)
把正则表达式的模式和标识转化成正则表达式对象,供 match() 和 search() 这两个 函数使用。
常用的flags:
re.I 忽略大小写
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M 多行模式
re.S 把‘.’切换成 包含换行符,默认 点 是不包含换行符号的。
re.X 为了增加可读性,忽略空格和’ # ’后面的注释
# TODO 添加一个列子
3.2 seach
标签:编码 表示 模式 osc ESS 多次 3.1 mac net
原文地址:https://www.cnblogs.com/louhui/p/8971497.html