加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

re-正则表达式模块

发布时间:2020-12-14 00:43:11 所属栏目:百科 来源:网络整理
导读:import re 预定义字符集: d:数字[0-9] D:非数字[^d] s:空白字符[空格trnfv] S:非空白字符[^s] w:单词字符[A-Za-z0-9_] W:非单词字符[^w] 匹配数量: .:匹配除换行符以外的任何单个字符 *:匹配前一个字符0或无限次(尽可能多的匹配) *?

import re

预定义字符集:

d:数字[0-9]

D:非数字[^d]

s:空白字符[<空格>trnfv]

S:非空白字符[^s]

w:单词字符[A-Za-z0-9_]

W:非单词字符[^w]

匹配数量:

.:匹配除换行符以外的任何单个字符

*:匹配前一个字符0或无限次(尽可能多的匹配)

*?:尽可能少的进行匹配前边的正则表达式

+:匹配前一个字符1次或无限次(尽可能多的匹配)

+?:尽可能少的进行匹配前边的正则表达式

?:匹配前一个字符0次或1次(尽可能多的匹配)

??:尽可能少的进行匹配前边的正则表达式

{m}:匹配前一个字符m次

{m,n}:匹配前一个字符m至n次(尽可能多的匹配)

{m,n}?:尽可能少的进行匹配前边的正则表达式

:转义字符

?P<name>R:R表示为正则表达式,对正则表达式匹配到的内容进行命名

函数:

match():从字符串第一个字符开始匹配,直到不能匹配到为止,并返回匹配到的字符串;如果开头不能匹配则返回NoneType报错信息

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

m = re.match("w+",a)

m.group()

wKioL1h8XlqA5mQjAAAHBSO6k_8922.png

search():在所有的字符串中开始进行匹配,返回匹配到的第一个结果

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

m = re.search("dvd",a)

m.group()

wKiom1h8XqHRW8cKAAAFgeJnvCo883.png

findall():返回所有匹配到的结果;返回一个列表

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

re.findall("[a-zA-Z]+",a)

wKioL1h8XuXBAKmNAAAJpgfGSd8545.png

split():用匹配到的字符对字符串进行切割;返回一个列表

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

re.split("d+",a)

wKioL1h8XzTgyqREAAAJn9h0yDs284.png

sub():把匹配到的内容进行替换,可以设定替换次数;返回替换后的结果

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

re.sub('d+',"|",a,count=3)

wKioL1h8X3Gwhx1-AAAJCzEQ-10546.png

group():返回匹配到的结果,常跟在match和search之后

例:

a = 'kjksajt3w9#53~59/35(*_dvds~r)3'

re.match("w+",a).group()

re.search("dvd",a).group()

compile():把正则表达式进行编译

例:

com = re.compile(r'd+') #r表示自然字符串,里边的字符不会被转义

e = com.findall('ksdhfkjshdfjkwiu237yyy8w7ye782skdhfkj374ljhfk2')

print(e)

注:可以看到compile编译后返回一个对象,在进行大量匹配的时候,compile效率会更高

groups():分组,即只获取括号内的匹配到的数据;以元组的形式返回

例:

f = re.search('(d+)hfkjshdfjkwiu(d+)','ksd234234hfkjshdfjkwiu237yyy8w7ye782')

print(f.groups())

wKioL1h8YCyQeF5NAAAHWg1uhAY942.png

groupdict():以命名方式匹配成功后,同时返回名字和匹配到的内容

例:

o = re.compile(r'(?P<name>d+)')

m = o.search('127.0.0.1')

m.groupdict()

wKiom1h8YF-S9pI2AAAMUEU5Gmg184.png

用正则匹配一条nginx日志:

日志:

66.249.69.131 - - [10/Aug/2016:03:20:09 +0800] "GET /robots.txt HTTP/1.1" 404 162 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

匹配规则:

p = r'(?P<ip>d{1,3}.d{1,3}) .* .* [(?P<time>.*)] "(?P<method>w+) (?P<url>[^s]*) (?P<version>[w|/.d]*)" (?P<status>d{3}) (?P<length>d+) "(?P<refer>[^s]*)" "(?P<userAgent>.*)"'

匹配结果:

{'ip': '66.249.69.131',

'length': '162',

'method': 'GET',

'refer': '-',

'status': '404',

'time': '10/Aug/2016:03:20:09 +0800',

'url': '/robots.txt',

'userAgent': 'Mozilla/5.0 (compatible; Googlebot/2.1; '

'+http://www.google.com/bot.html)',

'version': 'HTTP/1.1'}

wKioL1h8YPzTP9OTAAAblgmdijU933.png

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读