regex - 如何匹配不属于正则表达式中一组子字符串的字符串?
问题描述
例如:
我有一个字符串是:
k0 + k1 * x + k2 * x ** 2 + a + b + 3
我想扔掉k\d
, a
,b
并返回一个列表。
返回值应该是:
[' + ", ' * x + ', ' * x ** 2 +', '+' + 3']
我试过[^k\d+,a,b]+
但是这个不能将 k 和一个或多个数字组合在一起,实际上它+
从结果中删除了所有数字和。
有没有办法解决这个问题?
用于测试的简单python代码:
import re
# this regex is the wrong one
str_format = re.compile(r'[^k\d+,a,b]+')
str = 'k0 + k1 * x + k2 * x ** 2 + b + a +3'
re.findall(str_format, str)
解决方案
字符类用于匹配单个字符,而不是一组字符。在您的情况下,您可以通过拆分模式来实现结果,例如
k\d+|[ab]
匹配k
的以及它后面的任何 1+ 数字(作为字符序列)或a
or b
。然后,您可以删除所有空匹配项并获得最终结果:
import re
text = 'k0 + k1 * x + k2 * x ** 2 + b + a +3'
print (list(filter(None, re.split(r'k\d+|[ab]', text))))
推荐阅读
- scala - 当实现只是抛出新错误时,Scala Array apply 方法如何返回索引处的值
- c# - 读取文本文件 c# 并按大小分隔
- git - 使用 Dropbox 同步本地 git 存储库
- azure - 单个应用服务下可能有多个 Web 应用吗?
- sql - 想要获取有限数量的行并显示它,然后在下一页显示之后的行
- postgresql - 无法使用 sqlx 库 golang 触发 \copy 命令
- javascript - 如何使用 SharePoint 在网站中生成标记 A
- django - 从传递给模型的 ModelChoiceField 中获取 id 值
- python - 如何在 Python 中使用多字符分隔符进行拆分?
- python - pyqt5 table+ video+ webview 显示 gmaps 在 ubuntu 上出现 seg 错误