栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

正则表达式① 元字符

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式① 元字符

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

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

元字符
元字符匹配规则
普通字符每个普通字符匹配其对应的字符
|或关系,匹配|两侧任意的正则表达式即可
.匹配除换行外的任意单个字符
[字符集]匹配字符集中的任意一个字符,[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  babyn")
result=re.findall("S+","hi  babyn")
print(result)

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号