简单一点为健康,简单写一写
啥是正则表达式。简单通俗来讲判断目标字符串是否符合特定的要求
比如判断是否是手机号邮箱网址这些简单的例子
以下内容符号皆为英符,为更明显观看部分符号为高亮加粗中文符号,请注意
import re #内置正则表达式的模块
\d dight
\d 表示任意一位数字
\d\d 表示任意两位数字
\d\d\d 表示任意三位数字
....一次类推
\w word
\w 表示任意一位字母
\w\w 表示任意两位字母
\w\w\w 表示任意三位字母
...依旧以此类推
\s space
\s 表示空格
. 英文符号点,表示任意单个字符
a. a点儿表示a值后边可以是任意的单个字符的值
* 星号表示*前边字符内容出现0次到多次
+ 加号表示+前边字符内容出现一次到多次
? 问号表示问号前边字符内容出现0到1次
假设 a? 就是指的是 a可以出现0次或者1次,显示的值要么空白没有,要么一次单个a
假设a,? 就是指的是a前边的, (a前边的逗号),可以没有,也可以出现一次,逗号指的是一个变量字符,可以是任意值
^ 表示以 。。。 开头
$ 表示以。。。。结尾 (可能和startswith,endswith一样的功能)
{n} 表示重复的次数 示例 \d\d\d = \d{3}
{n,} 表示最少重复n次
{,m} 表示最多重复的次数
{n,m} 表示最少重复n次,最多重复m次
以下放一些实例性的内容,干柴烈火的匹配下,记住了还要再理解下
# pattern 模式
# compile 编译
# match 对比
# \d表示任意的一位数字
# \w 表示任意的一个字母
# +表示内容出现一次到多次
pattern = re.compile("(\d+)(\w+)") #每一个括号就是一个group(组)
content = "123helloworld" #获取一串的数字字母
result=re.match(pattern,content)
if result:
print(result) # 返回匹配的对象<_sre.SRE_Match object; span=(0, 13), match='123helloworld'>
print(result.group(0)) #返回符合要求的全部内容 123helloworld
print(result.group(1)) #回去第一个group组也就是第一个括号执行结果全部数字 123
print(result.group(2)) #返回第二个括号执行内容,\w+ 即全部符合的字母 helloworld
#不可能返回第三个括号了,只有两个括号,再执行就错了
# 两个无条件以字符对比的实例
pattern=re.compile("my")
result=pattern.match("myself")
print(result) #返回匹配对象输出结果是 <_sre.SRE_Match object; span=(0, 2), match='my'>
pattern=re.compile("my")
result=re.match(pattern,"myself") #match匹配的是内容开始的部分,等同startswith
print(result.group(0)) #返回符合要求的全部内容 结果 my
# 通俗的讲 pattern=re.compile(a)
# #b的值可以在额外此定义也可以直接在下述b以字符串的形式表现
# result=re.match(pattern,b)
# print(result.group(0)) #输出结果 my
# print(result) #直接输出结果的话就是<_sre.SRE_Match object; span=(0, 2), match='my'>
result=re.match(pattern,"myself")
print(result)
pattern=re.compile("lalala")
result=re.match(pattern,"lalalaha")
print(result) #.group(0)就会直接输出对比的结果lalala