python正则匹配单词和字符

匹配所有单词比较好用的:

r"\w'+"
r"[a-zA-Z]+"

匹配所有标点符号:

r"[^0-9A-Za-z\u4e00-\u9fa5]"

匹配所有单词以及标点符号,并返回列表,但是都有点问题,不过我已经找到了解决办法如下:

import re
strs =  "Hello, I'm a string!"
pat1 = r"\S*"
print(re.findall(pat1, strs)) 
# 输出结果
# ['Hello,', '', "I'm", '', 'a', '', 'string!', '']

pat2 = r"[A-Za-z_0-9]*"
print(re.findall(pat2, strs)) 
# 输出结果
# ['Hello', '', '', 'I', '', 'm', '', 'a', '', 'string', '', '']

pat3 = r"[\w']+|[.,!?;]"
print(re.findall(pat3, strs))
# 输出结果
# ['Hello', ',', "I'm", 'a', 'string', '!']
# 但是这种方法存在缺陷

pat4 = r"[\w\']+|[^0-9A-Za-z\u4e00-\u9fa5]"
print(re.findall(pat3, strs))
# 输出结果,完美解决问题
# ['Hello', ',', ' ', "I'm", ' ', 'a', ' ', 'string', '!']

匹配一个文件中两个标识符号之间的文本:

file1 = open("file1.txt", 'r', encoding="utf-8")
file1 = file1.read()
"""
key1
1235
----
125615
key2
---
15625
"""
key1 = "key1"
key2 = "key2"
pat1 = re.compile(key1 + '(.*?)' + key2, re.S)
res = pat1.findall(file1)[0]
print(res)
"""
1235
----
125615
"""

提取指定字符串之后的全部内容:

print(re.findall('(?<=key).*$', "adnkanddo0key"))
# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值