Python 正则表达式

Python 正则表达式

正则表达式

#正则表达式的操作
import re

str1 = 'C0 |C1++ |J3ava|C4#|Python Pytho2n PythonPytho\n'
#内置函数判断Python字符串方式
print(str1.index('Python')>-1)
print('Python' in str1)

#正则表达式re方式搜索
dst = 'Python'

r=re.findall(dst,str1)
if len(r) > 0:
    print('字符串中包含{r[0]}'.format(r=r))
else:
    print('字符串中不包含{}'.format(dst))

#提取字符串中数字
for i in str1:
    if i > '0' and i <= '9' :
        print('find number ' + i)

#采用\d这种元字符来区分数字  学好正则表达式的关键是了解元字符有哪些,怎么用 , \标识概括字符集
print(re.findall('\d',str1))
print(re.findall('[0-9]',str1))
#\D匹配字符
print(re.findall('\D',str1))
print(re.findall('[^0-9]',str1))
#\w匹配字母和数字 不包含字符
print(re.findall('[\w]',str1))
#\W匹配字符
print(re.findall('[\W]',str1))
#\s匹配类似空格等制表符
print(re.findall('[\s]',str1))
#\S匹配类似非空格等制表符
print(re.findall('[\S]',str1))
#.匹配除换行符之外
print(re.findall('.',str1))

#findall 功能: 返回每个匹配,组成一个列表,第三个参数为模式,re.I为忽略大小写,re.S为匹配所有字符包括换行符
print(re.findall('c',str1,re.I  ))
print(re.findall('.{1,2}',str1,re.S))


str2 = 'abc, acc, aec, afc, ahc'
#[]体现是或的关系
r1 = re.findall('a[fc]c',str2)
print(r1)
#使用^符号取反
r1 = re.findall('a[^fc]c',str2)
print(r1)
#使用-符号取一段字符
r1 = re.findall('a[c-f]c',str2)
print(r1)
#单独使用[]时会分别搜索f c
r1 = re.findall('[fc]',str2)
print(r1)

#数量词{,}可以明确几个匹配字符
r2 = re.findall('[a-z,A-Z]{1,4}',str1)
print(r2)
#正则表达式默认贪婪(取最大的范围,直至不满足范围条件)的表达方式
#非贪婪表示方法为{,}? 等同于
#r2 = re.findall('[a-z,A-Z]{1}',str1)
r2 = re.findall('[a-z,A-Z]{1,4}?',str1)
print(r2)
#数量词表示方式*:表示匹配前面字符0次或者无限多次
#数量词表示方式+:表示匹配前面字符最少出现一次
#数量词表示方式?:表示匹配前面字符,最多达到匹配字符的长度
r2 = re.findall('Python*',str1)
print(r2)
r2 = re.findall('Python+',str1)
print(r2)
r2 = re.findall('Python?',str1)
print(r2)

#边界匹配,^表示从开始匹配,$表示匹配到末尾

qq = '100000000000'
r3 = re.findall('000',qq)
print(r3)
r3 = re.findall('^000$',qq)
print(r3)
r3 = re.findall('000$',qq)
print(r3)
r3 = re.findall('^000',qq)
print(r3)

#()表示且关系
r2 = re.findall('(Python)',str1)
print(r2)

#re.sub()完成字符串的替换
r4 = re.sub('[0-9]','',str1,10)
print(r4)
r4 = r4.replace('|','')
print(r4)

#sub第二个参数可以是函数
def convert(value):
    matched = value.group()
    if matched == 'C' or matched == 'C++':
        return matched
    elif matched == 'Java' or matched == 'C#':
        return matched + ' '
    elif len(matched)==len('Python'):
        return 'Python'
    else:
        return ''

r4 = re.sub('Python*',convert,r4,10)
r4 = re.sub('C',convert,r4,10)
r4 = re.sub('[C++]{3}',convert,r4,10)
r4 = re.sub('C#',convert,r4,10)
r4 = re.sub('Java',convert,r4,10)
print(r4)

#re.match()函数返回从开始搜索,不匹配返回None
str3 = 'Python' 
r5 = re.match('Python', str3)
print(r5)
#re.search()函数返回从开始搜索,没有返回None,
r5 = re.search('Python', str1)
print(r5)
#group()返回匹配的字符 group(0)标识完整匹配结果,group(1)表示搜索到匹配的结果
print(r5.group())
#span()返回匹配的范围
print(r5.span())

str4 = 'life is short, i use python,i love python'

r6 = re.search('life(.*)python(.*)python',str4)
print(r6.group(0))
print(r6.group(1))
print(r6.group(2))
print(r6.group(0,1,2))
r6 = re.findall('life(.*)python(.*)python',str4)
print(r6)

json相关

import json

json_str = '''{
        "student":
            [
                {"name":"crj","age":18,"flag":false},
                {"name":"zgq","age":18,"flag":false}
            ]
    }'''
#字符串到语言结构叫反序列化
student = json.loads(json_str)

print(type(student))
print(student)
#数据结构转字符串叫序列化
json_str2 = json.dumps(student)

print(json_str2)

""" for key,value in student.items():
    print('key is : '+ key + ' value is : '+ str(value))
 """
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值