python--正则表达式

一、python的正则

  1.python的正则表达式利用re模块

import re

# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)

# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

二、正则规则

  1.字符串

字符功能
. 匹配任意1个字符(除了 )
[ ] 匹配[ ]中列举的字符
d 匹配数字,即0-9
D 匹配非数字,即不是数字
s 匹配空白,即 空格,tab键
S 匹配非空白
w 匹配单词字符,即a-z、A-Z、0-9、_
W 匹配非单词字符

  2.表示数量

字符功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次

  3.字符串前加r,表示自动转义,在正则表达式中无须在使用进行转义

  4.表示边界

字符功能
^ 匹配字符串开头
$ 匹配字符串结尾
 匹配一个单词的边界
B 匹配非单词边界

  5.匹配分组

字符功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
um 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
#分组匹配
s = "<html><h1>hello world</h1></html>"

res = re.match(r"<(.+)><(.+)>.+</2></1>", s)
print(res.group())

#起别名
s = "<html><h1>hello world</h1></html>"
re.match(r"<(?P<key1>.+)><(?P=<key2>.+)>.+</(?P=key2)></(?P=key1)>", s)

   6.match,search,findall

    (1) match:从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配,pattern要以$结尾。

    (2) search:若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个。

    (3) findall:返回string中所有与pattern相匹配的全部字串,返回形式为数组。

  7.使用sub方法实现批量替换

    re.sub(正则规则,要替换成的字符串或一个函数(返回值相当于字符串),要替换的字符串)

原文地址:https://www.cnblogs.com/peilanluo/p/9038650.html