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