正则表达式的简单使用

常用匹配规则匹配字符

在这里插入图片描述

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, "*"))

在这里插入图片描述

待更新…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值