Python正则表达式re的使用

re库的使用例子

# -*- coding:UTF-8 -*-
'''
date:20200226
'''

import re

#正则表达式验证
#对一组数据进行验证,验证里面是否存在某些字符串
# re.I	使匹配对大小写不敏感
# re.L	做本地化识别(locale-aware)匹配
# re.M	多行匹配,影响 ^ 和 $
# re.S	使 . 匹配包括换行在内的所有字符
# re.U	根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
# re.X	该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
def listDataDeal(data,letter):
    #查找出所有字母单词,不区分大小写
    pattern = re.compile(letter,re.I)
    result = []
    #位置信息
    num = []
    for i in range(len(data)):
        dt = pattern.findall(data[i])
        if dt ==[] or dt ==None:
            pass
        else:
            result.extend(dt)
            num.append(i)
    print "寻找特定字符:",result
    print "现实特定字符的位置:",num

#过滤其他字符,只保留字母+数字+下划线
def Datas(data):
    pattern = re.compile('\w+')
    #findall 返回的是列表,search,match返回的是字符串
    dt = pattern.findall(data)
    print "只保留字母+数字+下划线:",dt
    return dt

#过滤其他内容,只保留数字
def numData(data):
    pattern = re.compile('[0-9]+')
    dt = pattern.findall(data)
    print "只返回数字:",dt
    return dt

#过滤其他字符,只保留特定类型的字母
def letterData(data):
    #search 返回的是字符串,而且只要匹配一个及结束
    dt = re.search('[a-z]+', data, re.I)
    print "返回第一个字母单词:",dt.group()
    return dt.group()

#sub替换功能,过滤特殊字符
def subData(data):
    #re.sub(pattern, repl, string, count=0, flags=0),sub的功能就是替换
    #\W 匹配非字母数字及下划线,pattern就是正则匹配的表达式,repl就是要替换成的字符串,string就是操作的字符串,flags就是替换次数
    dt = re.sub('\W+','',data)
    print "删除字符串中的特殊字符",dt
    return dt

def dataInput():
    #test123&*32_124forus>12
    data = raw_input("请输入字符串:")
    Datas(data)
    numData(data)
    letterData(data)
    subData(data)

if __name__ == "__main__":
    data = ['1', 'a', 'test', '2345', 'ak6', '7fdj', 'Test', 'TEST1']
    listDataDeal(data,'test')
    dataInput()

输出为:

寻找特定字符: ['test', 'Test', 'TEST']
现实特定字符的位置: [2, 6, 7]
请输入字符串:test123&*32_124forus>12
只保留字母+数字+下划线: ['test123', '32_124forus', '12']
只返回数字: ['123', '32', '124', '12']
返回第一个字母单词: test
删除字符串中的特殊字符 test12332_124forus12

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值