首页 > 解决方案 > 正则表达式:如何在其他捕获字符之前匹配一个字符?

问题描述

我正在尝试匹配要确保第一个字符不是等号的字符串列表,不要捕获该匹配项。因此,对于一个列表(摘自 pip freeze),例如:

ply==3.10
powerline-status===2.6.dev9999-git.b-e52754d5c5c6a82238b43a5687a5c4c647c9ebc1-
psutil==4.0.0
ptyprocess==0.5.1

我希望捕获的输出如下所示:

==3.10
==4.0.0
==0.5.1

我首先认为使用负前瞻(?![^=])会起作用,但是使用正则表达式(?![^=])==[0-9]+.*最终会捕获我不想要的行:

==3.10
==2.6.dev9999-git.b-e52754d5c5c6a82238b43a5687a5c4c647c9ebc1-
==4.0.0
==0.5.1

(?:[^=])我还尝试使用带有正则表达式的非捕获组,(?:[^=])==[0-9]+.*但最终捕获了我也不想要的第一个字符:

y==3.10
l==4.0.0
s==0.5.1

所以问题是这样的:如何在正则表达式的其余部分之前匹配但不捕获字符串?

标签: regexregex-lookarounds

解决方案


负面的看法将是去:

(?<!=)==[0-9.]+

另外,这是我喜欢使用的网站:

http://www.rubular.com/

当然,如果您建议您正在使用哪个引擎/软件,它有时会有所帮助,这样我们就知道可能存在哪些限制。


推荐阅读