python--正则表达式第一部分

目录

1. 什么是正则表达式

2.在python中使用正则表达式

3.正则表示字符

4.正则表示数量

5.正则表示边界


1. 什么是正则表达式

就是按照一定的规则去处理字符串的工具,这个规则叫正则表达式,它独立于任何编程语言之外,也就是说,任何编程语言都可以用正则表达式

2.在python中使用正则表达式

第一步:导入re正则库
import re

第二步:定义正则规则以及要匹配的字符串

str1 = "Today is a good day'     # 定义需要处理的字符串

pattern = "Today"       # 定义一个正则规则

result = re.match(pattern,str1)     # 使用正则匹配

第三步:进行校验得到结果

print(result) 

print(result.group())    将匹配到的内容提取出来

 结果:
        <re.Match object; span=(0, 5), match='Today'>
        Today

re.match(正则规则, 匹配的字符)
        从左往右进行匹配,如果符合规则,返回对象,如果没有匹配上,返回None
result.group() 将匹配到的内容提取出来(从左往右获取第一次匹配到的内容)

3.正则表示字符

字符                功能

.               匹配任意一个字符(除了\n

[ ]            匹配[ ]列举的字符

\d            匹配数字,即0-9

\D            匹配非数字,即不是数字的其他字符 

\s             匹配空白,即 空格、tab键、\n、\t

\S            匹配非空白

\w            匹配单词字符    注意:正则中的单词是指  a-z,A-Z,0-9

\W           匹配非单词字符     

import re

print(re.match(".", "\nqwer"))    # None
print(re.match("....", "qwerty"))     # <re.Match object; span=(0, 4), match='qwer'>

print(re.match("\d", "qw999"))        # None
print(re.match("\d\d\d\d", "9999"))     # <re.Match object; span=(0, 4), match='9999'>

print(re.match("\D", "qw9999"))      # <re.Match object; span=(0, 1), match='q'>
print(re.match("\D", "9999"))      # None

print(re.match("\s","\tqw9999"))     # <re.Match object; span=(0, 1), match='\t'>
print(re.match("\s","9999"))        # None

print(re.match("\S","\tqw9999"))     # None
print(re.match("\S","9999"))       # <re.Match object; span=(0, 1), match='9'>

print(re.match("\w","\tqw9999"))     # None
print(re.match("\w","_999"))       # <re.Match object; span=(0, 1), match='_'>

4.正则表示数量

作用:用来限制规则在字符串中取值的长度,而不是限制字符串本身的长度
正则前面加r是为了避免出现对转义字符的处理

字符                功能

*                匹配前一个字符出现0次或者无限次,即可有可无        等价于{,}

+               匹配前一个字符出现1次或者无限次,即至少有1次         等价于{1,}

?               匹配前一个字符出现1次或者0次,即要么有1次,要么没有      {0,1}

{m}           匹配前一个字符出现m次

{m,}          匹配前一个字符至少出现m次

{m,n}        匹配前一个字符出现从m到n次

import re
print(re.match(r"\d*", "qwe"))     # <re.Match object; span=(0, 0), match=''>
print(re.match(r"\d*", "1"))      # <re.Match object; span=(0, 1), match='1'>

print(re.match(r"\d+", "qwe"))    # None
print(re.match(r"\d+", "1233434994399333"))   # <re.Match object; span=(0, 16), match='1233434994399333'>

print(re.match(r"\d?", "qwe"))       # <re.Match object; span=(0, 0), match=''>
print(re.match(r"\d?", "187297845"))    # <re.Match object; span=(0, 1), match='1'>

print(re.match(r"\d?[a-z]", "123qwe"))     # None
print(re.match(r"\d+[a-z]", "123qwe"))     # <re.Match object; span=(0, 4), match='123q'>
print(re.match(r"\d*[a-z]", "123qwe"))      # <re.Match object; span=(0, 4), match='123q'>
print(re.match(r"\d?[a-z]+", "123456829490qwe"))     # None
print(re.match(r"\d*[a-z]+", "123456829490qwe"))     # <re.Match object; span=(0, 15), match='123456829490qwe'>

# 匹配一个字符出现的次数
print(re.match(r"\d{3}[a-z]", "123abcqwer"))     # <re.Match object; span=(0, 4), match='123a'>
print(re.match(r"\d{3,}[a-z]", "1231212abzqwer"))    # <re.Match object; span=(0, 8), match='1231212a'>
print(re.match(r"\d{3,5}[a-z]", "1231212abzqwer"))    # None
print(re.match(r"\d{,}[a-z]", "1231212abzqwer"))    # <re.Match object; span=(0, 8), match='1231212a'>
print(re.match(r"\d{,}[a-z]", "1231212abzqwer"))    # <re.Match object; span=(0, 8), match='1231212a'>
print(re.match(r"\d{,}[a-z]", "abzqwer"))    # <re.Match object; span=(0, 8), match='a'>

 5.正则表示边界

字符                功能

              匹配字符串开头

$                匹配字符串结尾

\b               匹配一个单词的边界:后面没字符或前面没有字符或前后都没有

\B               匹配非单词边界

import re
print(re.match(r"1[3-9]\d{9}$", "13181823848"))    # 必须9个数字结尾 <re.Match object; span=(0, 11), match='13181823848'>
print(re.match(r"^1[3-9]\d{9}$", "13181823848"))   # <re.Match object; span=(0, 11), match='13181823848'>

print(re.match(r"^\w+on\b", "python"))     # <re.Match object; span=(0, 6), match='python'>
print(re.match(r"^.+on\b", "python"))       # <re.Match object; span=(0, 6), match='python'>
print(re.match(r"^\w+\s\bon\b", "pyth on"))    # <re.Match object; span=(0, 7), match='pyth on'>
print(re.match(r"^.+\s\b_ho\b", "pyt _ho n"))      # <re.Match object; span=(0, 7), match='pyt _ho'>

print(re.match(r"^\w+\s\Bon\B", "pyth on"))   # None
print(re.match(r"^\w+on\B", "pythons"))      # <re.Match object; span=(0, 6), match='python'>

还有正则的匹配分组、正则高级用法、贪婪模式与非贪婪模式,见正则表达式第二部分,今天先写这么多啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TWAS@py

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

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

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

打赏作者

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

抵扣说明:

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

余额充值