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)
我也不太理解这个回溯引用,知道的大佬讲一下…