正则表达式详解二:search、or、组合、贪婪模式、标签

本文详细介绍了Python中的正则表达式,包括特殊字符的含义、匹配模式、组合表达式以及贪婪与非贪婪模式。通过实例解析了如何进行字符串匹配、搜索、分组等操作,并探讨了在处理HTML标签时的注意事项。内容涵盖正则表达式的常用功能,旨在帮助读者深入理解和运用正则表达式。
摘要由CSDN通过智能技术生成

1.word:

import re
#  .   代表除了换行之外的任意字符
#  \   转义字符,间接,\r \t \n
#  \d  代表数字
#  \D  代表非数字
#  \s  代表空格  \t
#  \w  代表单词字符 ,大小写字母和数字
#  \W   代表非单词字符数字
regex=re.compile(r"\W",re.IGNORECASE)#预编译
print(regex.match("+"))

结果:

 2.select:

import re
#"[abcd]"abcd之间取一个,第一个字符在abcd之间
#"[^abcd]"abcd之间取一个,第一个字符不在abcd之间
#[0-9]数字,加个^是非数字
#[a-z]字母
#[]代表一个字符
regex=re.compile("[A-Z][0-9]",re.IGNORECASE)#IGNORE忽略异常忽略大小写
print(regex.match("a2"))

结果:

3.times:

import re
#*代表0次或无限次,+代表一次或者多次
#?代表一次或者零次
#{n}代表n次
#{n,m}代表n到m次
regex=re.compile("\\d{1,2}",re.IGNORECASE)
print(regex.match("9"))
print(regex.match("91"))
print(regex.match("91w"))
print(regex.match("das91w"))

 结果:

4.search:

import re
# m=re.match("^the","there the dog is wolf")
# if m is not None:
#     print(m.group())
# 搜索^the以the开头
# 搜索$the以the结尾
# \b 表示\w the \W结束符号
#"the\b"    mythe结束符
#”the\b“    mytheit 不能
m=re.search(r"\bthe"," mythe ")
if m is not None:
    print(m.group())
else:
    print("not find")

 结果:

5.or:

import re
#|表示两者出现一个即可
#(abc){2}  表示abcabc
#abc{2}    表示abcc
m=re.search("abc|xyz","asd xyzabc ")
if m is not None:
    print(m.group())
else:
    print("not find")
n=re.search("abc{2,4}","abccc")
if n is not None:
    print(n.group())
else:
    print("not find")

 结果:

 6.组合:

import re

import winerror

m=re.search(r"(abc){2}","abcabc")
print(m)
m=re.search(r"(abc|xyz){2}","xyzxyz")#任取一个xyz,abc
print(m)
m=re.search(r"(?:)(abc|xyz){2}","xyzxyz")#?:没啥用,有跟没有没影响
print(m)
m=re.search(r"(((?i)abc){2})","ABcabC")#?i表示忽略大小写
print(m)
m=re.search(r"abc(?#这就是注释,一点用没有)","abc")#?#表示注释
print(m)
m=re.search(r"a(?=bc)","acb")#?表示后面必须跟bc才能匹配a
print(m)
m=re.search(r"a(?!bc)","abj")#?!表示后面必须不能跟着bc才能匹配a
print(m)
m=re.search(r"(?<=bc)a","bca")#?<表示前面必须跟着bc才能匹配a
print(m)
m=re.search(r"(?<!bc)a","bsa")#?<!表示前面必须不能跟着才能匹配a
print(m)

结果:

7.贪婪模式:
 

import re
print(re.match(r"^(\d+)(0*)$","88480000").groups())#正则表达式默认贪婪
print(re.match(r"^(\d+?)(0*)$","88480000").groups())#非贪婪

 结果:

 正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。我们可以使用 将贪婪匹配模式转化为惰性匹配模式

8.标签:
 

import re
mystr="<title>百度一下,你就知道</title>"
res=re.match("<([A-Za-z]*)>.*<(/[A-Za-z]*)>",mystr)
print(res.group())
#([A-Za-z]*)     \\1一一对应
res=re.match("<([A-Za-z]*)>.*<(/\\1)>",mystr)
print(res.group())

结果:

 9.标签强化:
 

import re
mystr="<title>百度一下,你就知道</title>"
mystrs="<HTML><title>百度一下,你就知道</title></HTML>"
res=re.match("<[\w]*>.*</[\w]*>",mystr)
print(res)
res=re.match("<[\w]*><[\w]*>.*</[\w]*></[\w]*>",mystrs)
print(res)
res=re.match("<([\w]*)>.*</\\1>",mystr)
print(res)

结果:

 10.标签名称:

import re
#?P<htm1>  名称为htm1    ?P=htm1匹配的是htm1
mystr="<HTML>百度一下,你就知道</HTML>"
res=re.match("<(?P<htm1>\w*)>.*</(?P=htm1)>",mystr)
print(res)

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值