Python正则表达式

import re

key = r"javapythonhtmlvhdl\n"#字符串加r可去除掉转义字符
p1=r"python"
pattern=re.compile(p1)
matcher=re.search(pattern,key)
print(matcher.group(0))

字符串前加r,可以去除掉转义字符
加入元字符,代表匹配内部的任意一个字符

import re

key = r"javaPythonhtmlvhdl\n"#字符串加r可去除掉转义字符
p1=r"[pP]ython"
pattern=re.compile(p1)
matcher=re.search(pattern,key)
print(matcher.group(0))

[Pp]代表无论是大写的P还是小写的p都可以被匹配到。

.在匹配时代表任意字符,.代表一个点

import re

key=r"assafsadw76148556@qq(com"
p=r"76148556@qq.com"
pattern1=re.compile(p)
print(pattern1.findall(key))
#只匹配点
key=r"assafsadw76148556@qq.com"
p1=r"76148556@qq\.com"
pattern2=re.compile(p1)
print(pattern2.findall(key))

在已知开头和结尾的情况下进行匹配

import re

key=r"<h1>xiaoyu<h1>"
p1=r"<h1>.+<h1>"
pattern=re.compile(p1)
print(pattern.findall(key))

+的含义在于匹配一个或者多个字符
输出结果应为以<h 1>开头,以<h 1>结尾的,中间包含一个或多个字符的字符串。

元字符*的用法

重复0次或多次

import re

key=r"http://www.fengluo.com & https://www.imooc.com"
p1=r"https*://"
pattern=re.compile(p1)
print(pattern.findall(key))

在这里插入图片描述

^元字符的用法

import re

key=r"xyu zyu syu wyu"
p1=r"[^x]yu"#除了内部包含的字符以外均可匹配
pattern=re.compile(p1)
print(pattern.findall(key))

除了^里包含的,其他都会寻找

简洁正则表达式常用写法

在这里插入图片描述

贪婪与懒惰求解法:

import re

key=r"76148556@qq.com.cn.ca"
p1=r"@.+?\."
pattern=re.compile(p1)
print(pattern.findall(key))

如果不加?则会取到最后一个.之前的字符串,正则表达式默认贪婪求取,加?可以锁定为第一个.的字符串

{}元字符的使用

import re

key=r"bt&bat&baat&baaaat"
p1=r"ba+t"#求取重复一次或者多次的
p2=r"ba{1,2}t"#求取重复1到2次的
p3=r"ba{1,}t"#求取至少匹配一次的
pattern=re.compile(p1)
print(pattern.findall(key))

子表达式

定义:将几个字符的组合形式组合成一个大的字符

import re

key=r"bbb127.0.0.1aaaaa"
p1=r"(\d{1,3}?\.){3}\d{1,3}"#将几个字符组合
pattern=re.compile(p1)
macher=re.search(pattern,key)
print(macher.group(0))

re.search方法:扫描整个字符串并返回第一个成功的匹配。

前瞻与后顾

import re

key=r"<j1>hellobaby<s1>"
p1=r"(?<=<j1>).+(?=<s1)"
pattern=re.compile(p1)
macher=re.search(pattern,key)
print(macher.group())

我个人理解向前向后查找,比如key字符串,前边必须要有j1后面必须要有s1的中间的字符串满足条件,如AAA(目标字符串)BBB,取出AAA与BBB之间的字符串。
其中?<=和?=<中的字符串是不包含的。

回溯引用

import re

key=r"<h1>hellobaby</h1><h2>hello error</h2><h3>helloman</h3><h4>hellolady</h4>"
p1=r"(?<=<(h[1-6])>)[^<>]+?(?=</\1>)"
pattern=re.compile(p1)
objs=pattern.finditer(key)
list=[]
for obj in objs:
    list.append(obj.group(0))
print(list)

我也不太理解这个回溯引用,知道的大佬讲一下…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值