程序猿大战Python——正则表达式——正则的常见规则一

匹配单个字符

==目标:==掌握单个字符的数据匹配。

常用的匹配单个字符的语法:

代码功能
.匹配除\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、+==。

  • 45
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

困了就倒头睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值