正则表达式范围性匹配
Posted tantao258
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式范围性匹配相关的知识,希望对你有一定的参考价值。
1、
import re key = r"<html><body><h1>hello world<h1></body></html>"#这段是你要匹配的文本 p1 = r"(?<=<h1>).+?(?=<h1>)"#这是我们写的正则表达式规则,你现在可以不理解啥意思 pattern1 = re.compile(p1)#我们在编译这段正则表达式 matcher1 = re.search(pattern1,key)#在源文本中搜索符合正则表达式的部分 print(matcher1.group(0))#打印出来 #hello world
2、
import re key = r"javapythonhtmlvhdl"#这是源文本 p1 = r"python"#这是我们写的正则表达式 pattern1 = re.compile(p1)#同样是编译 matcher1 = re.search(pattern1,key)#同样是查询 print(matcher1.group(0)) #python
3、
import re key = r"<h1>hello world<h1>"#源文本 p1 = r"<h1>.+<h1>"#我们写的正则表达式,下面会将为什么【.字符在正则表达式代表着可以代表任何一个字符(包括它本身)】 pattern1 = re.compile(p1) print(pattern1.findall(key))#发没发现,我怎么写成findall了?咋变了呢? #[‘<h1>hello world<h1>‘]
4、#正则表达式中有一个字符\,这个符号通常用来把特殊的符号转成普通的,把普通的转成特殊的,
#我们在.的前面加上了转义符\,但是并不是代表匹配“\.”的意思,而是只匹配“.”的意思
import re key = r"[email protected]" p1 = r"[email protected]\.edu\.cn" pattern1 = re.compile(p1) print (pattern1.findall(key)) #[‘[email protected]‘]
5、#有没有发现我们第一次用.时,后面还跟了一个+?那这个加号是干什么的呢
#“.字符在正则表达式代表着可以代表任何一个字符(包括它本身)”,但是"hello world"可不是一个字符。
# +的作用是将前面一个字符或一个子表达式重复一遍或者多遍
#比方说表达式“ab+”那么它能匹配到“abbbbb”,但是不能匹配到"a",它要求你必须得有个b,多了不限,少了不行
#问我有没有那种“有没有都行,有多少都行的表达方式”,回答是有的。【*】跟在其他符号后面表达可以匹配到它0次或多次
比方说我们在王叶内遇到了链接,可能既有http://开头的,又有https://开头的,我们怎么处理?
import re key = r"http://www.nsfbuhwe.com and https://www.auhfisna.com"#胡编乱造的网址,别在意 p1 = r"https*://"#看那个星号! pattern1 = re.compile(p1) print (pattern1.findall(key)) #[‘http://‘, ‘https://‘]
6、[]
代表匹配里面的字符中的任意一个
import re key = r"lalala<hTml>hello</Html>heiheihei" p1 = r"<[Hh][Tt][Mm][Ll]>.+?</[Hh][Tt][Mm][Ll]>" pattern1 = re.compile(p1) print pattern1.findall(key) #[‘<hTml>hello</Html>‘]
以上是关于正则表达式范围性匹配的主要内容,如果未能解决你的问题,请参考以下文章