python正则表达式

										**正则表达式**

import re
a=‘c|c++|python|java|php’# |:为或者的意思
b=re.findall(‘python’,a)
print(b)#运行结果为:返回值为一个列表类型[‘python’]
#数量词
import re
a=‘python 11111java66666php’
b=re.findall(’[a-z]{3}’,a)
print(b)#运行结果为:[‘pyt’, ‘hon’, ‘jav’, ‘php’]
#在字符串中找出数字
import re
a=‘shjgdjsd45564sad455’
b=re.findall(’\d,a’)# \d为任意数字
print(b)#运行结果为[‘4’, ‘5’, ‘5’, ‘6’, ‘4’, ‘4’, ‘5’, ‘5’]
#字符集
import re
s=‘abc,adc,acc,afc’
b=re.findall(‘a[bd]c’,s)#用a和c来定界取中间为b或者d的的字符
print(b)#运行结果为:
[‘abc’, ‘adc’]**
#如果去除定界a和c
b=re.findall(’[bd]’,s)
print(b)#运行结果就为:[‘b’, ‘d’]**
#概况字符集
#\d \D
#\w 单词字符 \W非单词字符
#. 匹配除换行符外所以字符
import re
a=‘python111java¥456php’
b=re.findall(’\w’,a)
print(b)#运行结果为:[‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’, ‘1’, ‘1’, ‘1’, ‘j’, ‘a’, ‘v’, ‘a’, ‘4’, ‘5’, ‘6’, ‘p’, ‘h’, ‘p’]
#\W非单词字符
b=re.findall(’\W’,a)
print(b)#结果就为[‘¥’]#非单词字符也包括空格和回车
#贪婪与非贪婪 默认为贪婪
#贪婪情况下

import re
a=‘python 11111java66666php’
b=re.findall(’[a-z]{3,6}’,a)
print(b)#运行结果为[‘python’, ‘java’, ‘php’]

#非贪婪
import re
a=‘python 11111java66666php’
b=re.findall(’[a-z]{3,6}?’,a)
print(b)#运行结果为[‘pyt’,‘hon’, ‘jav’, ‘php’]
#数量词
#匹配星号前面字符0次或无限次,
import re
a=‘pytho0python0pythonn’
b=re.findall(‘python*’,a)
print(b)#结果为[‘pytho’,‘python’,‘pythonn’]

+ 匹配1或者无限次

import re
a=‘pytho0python0pythonn’
b=re.findall(‘python+’,a)
print(b)#结果为[‘python’,pythonn’]

?匹配0次或者一次

import re
a=‘pytho0python0pythonn’
b=re.findall(‘python?’,a)
print(b)#结果为[‘pytho’,‘python’,‘python’]#y=因为它都会被去掉最多匹配一次,所以pythonn最后的n都会被去掉

边界匹配

import re
a=‘100000001’
b=re.findall(’^000’,a)
print(b)#结果为[ ]为一个空列表,因为^这个符号作用为从开头开始匹配,a字符第一个数字为1,所以不能匹配成功
import re
a=‘100000001’
b=re.findall(‘000$’,a)# $这个为从末尾开始匹配
print(b)#也为一个空列表[ ],a字符末尾为001,所以不能匹配

#那怎么才能匹配成功呢?
import re
qq=‘10000001’
#判断这个qq是否为4-9位数的qq,是则返回,不是则返回一个空列表
b=re.findall(’^{4,9}$’,a)
print(b)#结果为[‘100000001’]

re.I re.S 匹配模式

import re
lanuge=‘PythonC#\njavaphp’
b=re.findall(‘c#.{1}’,lanuge,re.I | re.S)#re.I表示忽略查找字符的大小写,re.S表示可以查找换行符
print(b)#结果就为[‘C#\n’]

#re.sub()正则替换
import re
lanuge=‘PythonC#javaC#PHPC#’
b=re.sub(‘C#’,‘go’,lanuge,1)#第四个参数为指定的替换次数,参数为0时则是全部替换
print(b)#结果为PythongojavaC#PHPC#
参数为0时
import re
lanuge=‘PythonC#javaC#PHPC#’
b=re.sub(‘C#’,‘go’,lanuge,0)#第四个参数为指定的替换次数,参数为0时则是全部替换
print(b)#结果为PythongojavagoPHPgo

#re.sun正则替换
import re
lauage=‘PythonC#JavaC#PHPC#’
def convert(value):
matched=value.group()
return ‘!!’+matched+’!!’
b=re.sub(‘C#’,convert,lauage)
print(b)#结果为:Python!!C#!!Java!!C#!!PHP!!C#!!
#把函数作为参数传递
import re
s=‘A8C3721D76’
def convert(value):
matched=value.group()
if int(matched)>=6:
return ‘9’
else:
return ‘0’
b=re.sub(’\d’,convert,s)
print(b)#结果为:A9C0900D99

search和match函数

match函数是从开头去寻找,没有寻找到将返回None
search函数是会一直去寻找直到找到为止
import re
s=‘A8C3721D76’
b=re.match(’\d’,s)
print(b)#None
b1=re.search(’\d’,s)
print(b1)#<_sre.SRE_Match object; span=(1, 2), match=‘8’>
#我们修改下字符串s把首字母A换成数字再来看看结果
#很显然我们match函数就找到了值
import re
s=‘98C3721D76’
b=re.match(’\d’,s)
print(b)#<_sre.SRE_Match object; span=(0, 1), match=‘9’>
b1=re.search(’\d’,s)
print(b1)#<_sre.SRE_Match object; span=(1, 2), match=‘8’>

gorp()分组

import re
s=‘life is shuort,i,use python,i,love,python’
r=re.search(‘life(.)python(.)python’,s)
print(r.group(0))#life is shuort,i,use python,i,love,python
print(r.group(1))# is shuort,i,use
print(r.group(2))#,i,love,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值