正则表达式① 元字符

正则表达式① 元字符

  • 定义:文本的高级匹配模式,其本质是由一系列字符和特殊符号构成的字串,即正则表达式。

  • 原理:通过普通字符和有特定含义的字符,来组成字符串,用以描述一定的字符串规则,比如:重复,位置等,来表达某类特定的字符串,进而匹配。

元字符

元字符匹配规则
普通字符每个普通字符匹配其对应的字符
|或关系,匹配|两侧任意的正则表达式即可
.匹配除换行外的任意单个字符
[字符集]匹配字符集中的任意一个字符,[0-9] [a-z] [A-Z]表示区间内任意一个字符
[^字符集]匹配除了字符集以外的任意一个字符
*匹配前面的字符出现0次或多次
+匹配前面的字符出现1次或多次
?匹配前面的字符出现0次或1次
{n}匹配前面的字符出现n次
{m,n}匹配前面的字符出现m-n次
^匹配目标字符串的开头位置
$匹配目标字符串的结尾位置
\d匹配任意数字字符
\D匹配任意非数字字符
\w匹配普通字符, 普通字符指数字,字母,下划线,汉字
\W匹配非普通字符,指除数字,字母,下划线,汉字外的字符
\s匹配空字符,空字符指 空格\r \n \t \v \f 字符
\S匹配非空字符
\b匹配单词的边界位置,单词边界指普通字符与其他字符的交界位置
\B匹配非单词的边界位置

注意: 当元字符与Python字符串中转义字符冲突的情况则需要使用r将正则表达式字符串声明为原始字符串,如果不确定那些是Python字符串的转义字符,则可以在所有正则表达式前加r。

类别元字符
匹配字符. [...] [^...] \d \D \w \W \s \S
匹配重复* + ? {n} {m,n}
匹配位置^ $ \b \B
其他| () \
"""
示例:元字符使用
"""
#导入re模块
import re

#匹配普通字符
result=re.findall('hello','hello world')
print(result)

#或关系
result=re.findall('com|cn','www.baidu.com.cn')
print(result)

#匹配任意一个字符,除了\n
result=re.findall(".总",'王总,李总,张总,赵总')
print(result)

#匹配字符集中的一个字符
result=re.findall('[abcd]','hello world')
result=re.findall("[!a-z]",'hello world!')  #混合书写,区间表达一般写在后面
print(result)

#字符集取反
result=re.findall('[^a-d]','abcde')
print(result)

#匹配重复0次或多次
result=re.findall('wo*w','wow!woooow ww!')
print(result)

#匹配重复1次或多次
result=re.findall('wo+w','wow!woooow ww!')
print(result)

#匹配重复0次或1次
result=re.findall('wo?w','wow!woooow ww!')
print(result)

#匹配重复指定次数
result=re.findall("wo{4}",'wow!woooow ww!')
print(result)

#匹配重复{m-n}次
result=re.findall("wo{1,4}",'wow!woooow ww!')
print(result)

#匹配开头结尾位置
result=re.findall("^hi","hi,baby")  #开头
result=re.findall("baby$","hi,baby")    #结尾
print(result)

#匹配数字字符或非数字字符
result=re.findall("\d+","id:1345,eid:87")   #数字字符
result=re.findall("\D+","id:1345,eid:87")   #非数字字符
print(result)

#匹配\w普通字符和\W非普通字符
result=re.findall("\w+","hi,数字小姐!") #普通字符,数字字母汉字下划线
result=re.findall("\W+","hi,数字小姐!") #除普通字符外的字符
print(result)

#匹配\s空字符和\S非空字符
result=re.findall("\s+","hi  baby\n")
result=re.findall("\S+","hi  baby\n")
print(result)

#匹配\b边界和\B非边界
result=re.findall(r"\bis\b","is this your handbag?")
print(result)

笔记内容参考自:达内吕泽老师

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值