- 基本使用
- import re # 导入re模块
- result = re.match(正则表达式,要匹配的字符串) # 使用match方法进行匹配操作
- result.group() # 如果上一步匹配到数据的话,可以使用group方法来提取数据
- 示例:
- import re
- result = re.match("itcast","itcast.cn",re.A)
- result.group()
- 匹配单个字符
- . 匹配任意一个字符(除了\n)
- [] 匹配[]中列举的字符
- \d 匹配数字,即0-9
- \D匹配非数字,即不是数字
- \s 匹配空白,即空格,tab键
- \S 匹配非空白
- \w 匹配单词字符,即a-z,A-Z,0-9,_(包含中文字符)
- \W 匹配非单词字符
- 匹配多个字符
- \d{m,n} 匹配m到n位的数字,m必须小于n
- \d{11} 11个连续的数字
- ? 前面的一个字符 可有可无
- * 前面的随意多个字符 可有可无
- .* +re.S 随意匹配
- + 任意多个字符 至少有一个
- .+
- \d{5,} 至少五位,至多不限
- 特殊字符
- ^ #匹配开头
- [^a] #表示只要不是a
- $ #匹配结尾
- re.I #忽略大小写
- re.A #ascii码
- re.S #匹配换行
- re.X #忽略空格和#后面的注释
- re.M #多行模式
- re.U #Unicode字符集
- re.DOTALL #使得.也能匹配\n换行符
- 匹配分组
- | 匹配左右任意一个表达式
- (ab) 将括号中字符作为一个分组 \1取第一个分组的值
- \num 引用分组num 匹配到的字符串
- (?P<name>) 分组起别名
- (?P=name) 引用别名为name 分组匹配到的字符串
- 高级用法
- match
- search 查找只要匹配到符合要求的
- 示例
- import re
- ret = re.search(r"\d+","阅读次数为9999")
- ret.group()
- 示例
- findall 查找所有匹配到符合要求的
- 示例
返回一个列表- import re
- ret = re.findall(r"\d+","python = 9999,c = 7890,c++ = 12345")
- print(ret)
- 示例
- finditer 查找所有匹配到符合要求的 返回一个迭代器
- sub 替换查找到的某个字符
- 示例
- inport re
- re.sub(r"\d+","998","python=997",c++="1024")
- "python=998","c++=998"
- subn 替换查找到的某些字符串 并返回一个元祖(修改后的字符串,修改的数量)
- split 切割字符串
- 示例
- import re
- i = re.split(r":| ","hello:word python")
- print(i)
- 示例
- compile 返回一个正则对象
- p = re.compile("\d",re.S)
- p.findall("chuan1zhi2")
- 贪婪与非贪婪
默认贪婪- 在 * ? + {m,n} 后面加上? 使贪婪变成非贪婪
- m.span(0) #返回匹配成功的整个子串的索引 (0.11)
- m.group(0) 返回成功的整个子串