python的正则表达与其他语言的正则一样,以下介绍一下基本用法,
文档:https://docs.python.org/zh-cn/3.7/library/re.html
引入
import re
正则一般有三种方式
一、普通字符
str = '$abc123def qwe'
reg = 'abc'
res = re.search(reg, str).group()
print(res)
二、转义字符
(1)'\w' 代表单个字母、数字、下划线
(2)'\W' 代表单个非字母、数字、下划线
(3)'\d' 代表单个数字
(4)'\D' 代表单个非数字
(5)'\s' 代表单个空格、制表符
(6)'\S' 代表单个非空格、制表符
(7)'\w\w\w\d' 组合使用
str = '$abc123def qwe'
reg = '\w'
reg = '\W'
reg = '\d'
reg = '\D'
reg = '\s'
reg = '\S'
res = re.search(reg, str).group()
print(res)
三、特殊字符 . * + ? {} [] () ^ $
(1) . 单个的任意字符,除换行符(\n)外
str = 'abc1233def qwe'
reg = '.'
res = re.search(reg, str)
print(res.group())
image.png
(2) * 代表匹配次数,任意次(包括0次)
如果一开始就不匹配,就返回0 次,开始如果就匹配,一直匹配到不满足条件为止
str = 'abc1233def qwe'
reg = '\w*'
res = re.search(reg, str)
print(res.group())
image.png
(3)+ 代表匹配次数,至少匹配一次。
如果一开始不匹配,继续往后找,直到不匹配
str = 'abc1233def qwe'
reg = '\w+'
res = re.search(reg, str)
print(res.group())
image.png
(4)?拒绝贪婪,只要前面的匹配规则达成就返回
reg = '\w+?' 匹配到一次就返回
reg = '\w*?' 不用匹配就返回0
str = 'abc1233def qwe'
reg = '\w+?'
res = re.search(reg, str)
print(res.group())
image.png
str = 'abc1233def qwe'
reg = '\w*?'
res = re.search(reg, str)
print(res.group())
返回空
(5){}代表匹配次数
{4}一个数字,代表必须匹配的次数
{2,5}区间,代表至少2,至多5
str = 'abc1233def qwe'
reg = '\w{2}'
# reg = '\w{2,5}'
res = re.search(reg, str)
print(res.group())
image.png
(6)[ ] 代表字符的范围,
[a-z,A-Z,0-9,_]
str = 'abc1233def qwe'
reg = '[a-z]'
res = re.search(reg, str)
print(res.group())
image.png
(7)子组,括号中的表达式首先作为整个正则的一部分,另外会把符合小括号中的内容在单独作为一个分组
reg= '\w+(\d{4})(\w+)'
str = 'abc1233def qwe'
reg = '\w+(\d{4})(\w+)'
res = re.search(reg, str)
print(res.group())
print(res.groups())
image.png
(8) ^xx 以什么开头, xx$ 以什么结尾
str = 'abc1233def qwe'
reg = '^a'
# reg = 'e$'
res = re.search(reg, str)
print(res.group())
image.png
网友评论