匹配单个字符
==目标:==掌握单个字符的数据匹配。
常用的匹配单个字符的语法:
代码 | 功能 |
---|---|
. | 匹配除\n之外的任何单个字符。 |
[ ] | 匹配[ ]中列举的字符。 |
\d | 匹配一个数字字符,比如[0-9]。 |
\D | 匹配一个非数字字符,比如[^0-9] 。 |
\s | 匹配任何空白字符。 |
\S | 匹配任何非空白字符。 |
\w | 匹配非特殊字符,比如a-z、A-Z、0-9、_、汉字。 |
\W | 匹配特殊字符,比如非字母、非数字、非汉字等。 |
例如,一起来完成:
(1)使用.来匹配任意单个字符;
(2)使用[a-z]、[A-Z]、[^0-9]
分别来查看小写字母、大写字母、非数字;
(3)使用\d来匹配一个数字字符;
(4)使用\w来匹配一个可能有数字、大小写字母、下划线的单个字符。
# 1.导入模块 import re # 报错:正则有误; 能输出结果,表示正常 # print(f"结果:{xxx}") # 2.任意字符 # print(f"结果:{re.match('.','h').group()}") # print(f"结果:{re.match('.','1').group()}") # print(f"结果:{re.match('.','_').group()}") # print(f"结果:{re.match('.','python').group()}") # 3.小写、大写、非数字 # print(f"结果:{re.match('[a-z]','a').group()}") # print(f"结果:{re.match('[a-z]','y').group()}") # print(f"结果:{re.match('[a-z]','Z').group()}") # 报错 # print(f"结果:{re.match('[a-z]','abc').group()}") # print(f"结果:{re.match('[A-Z]','B').group()}") # print(f"结果:{re.match('[0-9]','1').group()}") # print(f"结果:{re.match('[^0-9]','b').group()}") # print(re.match('\D','b').group()) # 4.一个数字 # print(f"结果:{re.match('[0-9]','8').group()}") # print(f"结果:{re.match('[0-9]','66').group()}") # print(re.match('\d','6').group()) # 5.单字符 # print(re.match('\w','6').group()) # print(re.match('\w','a').group()) # print(re.match('\w','N').group()) # print(re.match('\w','_').group()) # print(re.match('\w','深圳').group())
==总结:==
(1)注意:使用匹配单个字符的方式,只能匹配一个字符内容;
(2)当要匹配除\n外的任何字符,可以使用(.);当要匹配非特殊字符(比如字母、数字、下划线或汉字等),可以使用(\w)。A、.;B、\w。
原始字符串
==目标:==了解原始字符串的简单使用。
原始字符串指的是:在所有的正则表达式前,最好加上r,语法:
r"正则表达式"
例如,一起来完成:
(1)请使用正则来匹配路径名:E:\\
;
(2)请尝试使用不同方式去匹配数据,观察效果;
(3)思考:当要定义一段批量文本内容时,该怎么定义字符串?
# 1.导入模块 import re # 2.匹配 # result = re.match("E:\\","E:\\").group() # result = re.match("E:\\\\","E:\\").group() # 3.原始字符串 程序报错了,就在正则前添加r # result = re.match(r"E:\\","E:\\").group() # 错误 # print(f"结果:{result}") # 4.扩展 strs = """ # 3.原始字符串 程序报错了,就在正则前添加r # result = re.match(r"E:\\","E:\\").group() # 错误 # print(f"结果:{result}")""" print(strs)
==总结:==
(1)当不想给一段文本数据内容转义而又要表达原始意义时,可以在文本数据内容前添加();A、w;==B、r==。
(2)注意:当正确写了正则后又匹配不出数据结果时,可以试试在正则前添加r解决问题。
匹配多个字符
==目标:==掌握多个字符的数据匹配。
常用的匹配多个字符的语法:
代码 | 功能 |
---|---|
X* | 匹配X出现0次或无限次,即可有可无。 |
X+ | 匹配X出现1次或无限次,即至少有1次。 |
X? | 匹配X出现1次或0次,即有一次或一次也没有。 |
X{m} | 匹配X恰好出现m次。 |
X{m,n} | 匹配X至少m次,但是不超过n次。 |
例如,一起来完成:
(1)使用X*来匹配出一个字符串:第1个字母为大小写字母,后面都是小写字母且这些字母可有可无;
(2)通过X+来匹配一个具有数字、大小写字母、下划线的字符串;
(3)通过X?来匹配0到99之间的任意数字;
(4)通过X{n,m}匹配出5到16位的密码,可以是大小写英文字母、数字、下划线。
import re # result = re.match("","").group() # print(f"结果:{result}") # X* # result = re.match("[a-zA-Z]","x").group() # result = re.match("[a-zA-Z]","U").group() # result = re.match("[a-zA-Z][a-z]*","U").group() # result = re.match("[a-zA-Z][a-z]*","UzogY").group() # print(f"结果:{result}") # X+ # result = re.match("\w","123abcABC_hello").group() # result = re.match("\w+","123abcABC_hello").group() # print(f"结果:{result}") # X? 0-9 10-99 # result = re.match("[1-9][0-9]","12").group() # result = re.match("[1-9][0-9]","98").group() # result = re.match("[1-9]?[0-9]","0").group() # result = re.match("[1-9]?[0-9]","17").group() # # result = re.match("[1-9]?[0-9]","09").group() # print(f"结果:{result}") # X{m,n} # result = re.match("[a-zA-Z0-9_]{5,16}","123456").group() result = re.match("[a-zA-Z0-9_]{5,16}","1234fjwoefwoe23__fwjelf").group() # ?如何解决? $ print(f"结果:{result}")
==总结:==
(1)使用匹配多个字符的方式,可以一个字符或批量数据内容;
(2)注意:当要匹配批量数据内容时,应该优先使用:()。A、*;==B、+==。