目录
常用匹配规则匹配字符
import re
data = 'aaaa1'
# .的使用
# 匹配一个任意字符除了换行符\n
pattern = '.'
res = re.match(pattern, data)
print(res.group()) # a
pattern = '..'
res = re.match(pattern, data)
print(res.group()) # aa
names = ['李大', '王二', '李三']
pattern = '李.'
for name in names:
res = re.match(pattern, name)
if res:
print(res.group()) # 李大,李三
# []的使用
# [abc] 匹配其中任意‘一个’字符
str1 = 'hello'
res = re.match('[he]',str1)
print(res.group()) # h
str2 = 'lloHe'
# res = re.match('[eH]',str2)
# print(res.group()) # h
pattern = '[a-z]' # abcde...
res = re.match(pattern,str2)
print(res.group()) # h
# \d 的使用
# \d匹配0-9
data = '133231abcdef'
print(re.match('\d',data).group()) # 匹配一位 1
print(re.match('\d\d',data).group()) # 匹配2位 13
print(re.match('\d'*3,data).group()) # 匹配3位 133
# \D 的使用
# 匹配非数字
data = '133231abcdef'
# print(re.match('\D',data).group()) # 报错,因为前面为数字
data = 'a133231abcdef'
print(re.match('\D',data).group())
# \s 的使用
# 匹配空白,即空格或table
data = ' hello'
print(re.match('\s'*2,data).group()) # 匹配两个空格
# \S 的使用
# 匹配非空白的字符
data = ' hello'
# print(re.match('\S',data).group()) # 报错
data = '1 hello'
print(re.match('\S',data).group()) # 1
# \w 匹配单词字符a-z A-Z 0-9 _
data = '_python hello'
print(re.match('\w',data).group()) #_
# \W 匹配非单词字符
data = '*python hello' # %^@#!&*(都行
print(re.match('\W',data).group()) # *
常用匹配规则匹配数量
平时用到
re.subn()替换连续出现的字符
替换多个连续出现相同字符的字符串,比如这是替换连续出现句号的字符串为单个句号,这是将出现2次或以上出现的句号转化为1个句号
essay, _ = re.subn('。{2,}', '。', essay)
re.split()可以按多个字符切割的字符串
例如:
按单个字符分割
>>> import re
>>> line = 'aaa bbb ccc;ddd eee,fff'
>>> line
'aaa bbb ccc;ddd eee,fff'
按多个字符分割,需要把多个字符放在[]内
>>> re.split(r'[;,]',line)
['aaa bbb ccc', 'ddd\teee', 'fff']
re.compile(r’[\u4e00-\u9fa5]+') 提取中文字符(去除多余标点)
import re
text = "沃土中原,黄河之水,培育出这珍贵的美景;锦绣江南,长江之韵,孕育出这奇幻的大地"
pattern = re.compile(r'[\u4e00-\u9fa5]+')
filter_data = re.findall(pattern, text)
text = ''.join(filter_data)
print(text)
结果(标点符号都被去除):
沃土中原黄河之水培育出这珍贵的美景锦绣江南长江之韵孕育出这奇幻的大地
re.compile(‘<[^>]*>’) 去除字符串中的html标签
pattern = re.compile('<[^>]*>')
content = pattern.sub(r'',content)
处理之前:
处理之后:
python正则过滤字母、数字及特殊字符
#去除特殊字符,只保留汉子,字母、数字
import re
string = "123我123456abcdefgABCVDFF?/ ,。,.:;:''';'''[]{}()()《》"
sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])","",string)
print(sub_str)
# 123我123456abcdefgABCVDFF
删除括号内的内容
import re
s = u"我是一个人(中国人)aaa[真的]bbbb{确定}【ys】21"
a = re.sub(u"\\(.*?)|\\{.*?}|\\[.*?]|\\【.*?】", "", s)
# '我是一个人aaabbbb21'
匹配括号里的内容
text = 'datetime.datetime(2020, 8, 10, 11, 7, 35)'
p = re.compile(r'[(](.*?)[)]')
result = re.findall(p, text)
print(result)
一些字符串本身的操作
去除空格
s=' ! This is a demo '
# 去除左空格
s.lstrip()
# 去除右空格
s.rstrip()
# 去除两边空格
s.strip()
填充字符串
import string
# 对一某个字符串按照固定长度填充
print("test".center(10, "*"))
print("test".ljust(10, "*"))
print("test".rjust(10, "*"))
待更新…