python正则表达式基本使用

python正则表达式基本用法

1.直接匹配

import re

str = 'hello world'
ret = re.match('hello',str)
print(ret.group())

2.单个字符的匹配

# . 匹配处换行符\n外的任意字符
ret = re.match('.',str)
print(ret.group())

# \d 匹配任意单个数字:0~9     \D 匹配任意单个非数字
str = '2020'
ret = re.match('\d',str)
print(ret.group())
str = 'hello'
ret = re.match('\D',str)
print(ret.group())

# \s 匹配任意单个空白字符(\n \t \r 空格)
str = ' '
ret = re.match('\s',str)
print(ret.group())

# \w 匹配任意单个数字字母下划线,\W正好相反
str = '_hello'
ret = re.match('\w',str)
print(ret.group())
str = '=='
ret = re.match('\W',str)
print(ret.group())

# [] 组合方式,比如匹配单个字符为数字或者字母k
str = 'k461'
ret = re.match('[\dk]',str)
print(ret.group())

# ^ 取反,比如匹配单个字符为非数字并且非字母k
str = 'qwer'
ret = re.match('[^\dk]',str)
print(ret.group())

3.匹配多次

# + 按前面的规则匹配1个及以上的字符串
str = 'k456rwe'
ret = re.match('[\dk]+',str)
print(ret.group())

# + 按前面的规则匹配0个及以上的字符串
str = 'k456rwe'
ret = re.match('.*',str)
print(ret.group())

# ? 按前面的规则匹配0个或1个字符串
str = 'k456rwe'
ret = re.match('.?',str)
print(ret.group())

# {m} 按前面的规则匹配m次字符串
str = 'k456rwe'
ret = re.match('[\w]{6}',str)
print(ret.group())

# {m,n} 按前面的规则匹配m~n次字符串,尽可能多
str = 'k456rwe'
ret = re.match('[\w]{3,5}',str)
print(ret.group())

4.一些特殊符号用法

# () 常用于或者(|)的情况,比如匹配url
str = 'http://www.baidu.com'
ret = re.match('(http|https|ftp)://[^\s]+',str)
print(ret.group())

# ^ 以什么开头,match函数自带这个,所以以search为例,^在[]中表示取反
str = "asdfasdfasdf"
ret = re.search('^a',str)
print(ret.group())

# $ 以什么结尾
str = 'asdfasdfasdf'
ret = re.match('\w+asdf$',str)
print(ret.group())

# ? 非贪婪模式,按尽可能少的字符取匹配,跟在匹配次数符号后面(+、*、{m,n})代表此义
str = '<h1>hello world</h1>'
# 这里想匹配<h1>,则需要非贪婪模式,若不加?,则会匹配整个字符串
ret = re.match('<.+?>',str)
print(ret.group())

# 如果要匹配\c 要用4个\,因为在python字符串和re中\都是转义字符
# 在python意义上,4个\转义后还有两个\,再在re意义上转义一次就变成了\c
str = '\c'
ret = re.match('\\\\c',str)
print(ret.group())
# 这样太麻烦了,有一个办法可以把python意义上\变成原生字符串,就是用r
ret = re.match(r'\\c',str)
print(ret.group())

# () 分组
str = '123qwer6453sdfg4123gsdgf'
ret = re.match('(\d+)\D+(\d+)\D+(\d+)\D+',str)
# 取出第二个()中的内容
print(ret.group(2))
# 取出所有()中的内容
print(ret.groups())

5.常用函数

# findall函数:找出所有匹配的字符串,以列表形式返回
str = '123qwer6453sdfg4123gsdgf'
ret = re.findall('\d+',str)
print(ret)

# sub函数:替换匹配的字符串,返回替换好的字符串
ret = re.sub('\d+','0',str)
print(ret)

# split函数:分割字符串,返回列表
str = 'Hello guys,nice to meet you!'
ret = re.split('[^a-zA-Z]',str)
print(ret)

# compile函数:对于需要执行多次的正则表达式,可以只编译一次,提高效率
r = re.compile('[^a-zA-Z]')
ret = re.split(r,str)
print(ret)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值