Python学习总结(九)正则表达式

正则表达式


什么是正则表达式

我的理解:正则表达式(Regular Expression)是用来做字符串匹配的一种精简表达方法。


正则表达式相关字符

一般形式:result = re.match(正则表达式, 匹配字符串)
python中的正则表达式匹配规则:
从左到右匹配,一旦匹配成功立刻返回class类型(不再匹配后续字符),否则返回NoneType


表示字符

声明:e.g. ‘\d’ 表示为数字,则相应大写 ‘\D’ 表示取反,即非数字。这里不对其大写做说明。

符号作用等价于
.占一个字符的位置,可匹配除\n的任何字符/
[ 规则 ]匹配一个满足括号内规则的字符/
\d匹配一个数字[1-9],[^\D]
\s匹配空格,如 \t, \n及空格等[^\S]
\w匹配数字、字母、下划线[1-9a-zA-Z_],[^\W]

注:[ ] 间的规则与规则之间无需用空格隔开,如上面的 \w 的另一种表示。
[ ] 内的 ^ 表示非 的意思,[^123] 等价于 [^1^2^3]
[1-9]:此字符为1到9间的数字


表示数量
符号作用等价于
*符号前的字符可有可无{0,}
+符号前字符至少出现一次{1,}
?符号前字符只能出现0次或1次{0,1}
{m}指定符号前字符出现数量为m次/
{m,}指定符号前字符至少出现m次/
{m,n}指定…区间为m次到n次/

注:
1.解决re与python中转义字符的冲突问题,e.g.
有字符串为 string = “\\nstring”(表转义),如果做正则表达式匹配这个字符串,需要这样写"\\\\nstring",为什么是四个反斜杠呢?因为对比匹配字符串来说,re的第一个反斜杠用来作为\ 的匹配,第三个反斜杠则用来作为\n的匹配。
python中的原始(raw)字符串很好的解决了这个问题,在re字符串前加r例如string = r"\nstring"就直接表示了原始的字符串(也就是双引号内什么样,字符串就是什么样)。
因此,在一般的re前最好加上r

2.几个帮助理解上述符号的例子:

  1. result = re.match("\d+", “abc”) ,result类型为None,因为在abc中数字一次都没出现
  2. result = re.match("\d?[a-z]", “1234abc”),result类型为None,问号释义为出现0次或1次,字符串向右匹配,匹配到2前已经出现过一次数字,因此 re 会对 2 做 [a-z] 的匹配,而2类型不为字母,故为None。
  3. result = re.match("\d?", “1234abc”),result类型为class,当匹配到字符1为数字后,证明数字出现了一次,那么直接返回class

表示边界
符号作用
^匹配字符串开头
$匹配字符串结尾
\b匹配单词边界
\B匹配单词边界

一个例子,匹配手机号码格式是否正确:
result = re.match(r"^1[35678]\d{9}$", phone_number)



未完待续

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值