相反的正则表达多年记事本

时间:2013-09-02 20:36:15

标签: regex notepad++

您好我需要对此正则表达式使用wih notepad +++

\d{2}-\d{2}|\d{2,4}[+-]

现在它取代了几年

ML 12+ (W166) = ML (W166)
FREELANDER II 07+ = FREELANDER II
Kuga 08-12 = Kuga
CRV 2012+ = CRV
RX270/350 10+ = RX270/350
QASHQAI 2+ = QASHQAI 2+
TRIBECA 05 = TRIBECA 
XC60 = XC60

在右侧(在'='之后)我展示它是如何工作的。我需要像这样的相反效果

ML 12+ (W166) = 12
FREELANDER II 07+ = 07
Kuga 08-12 = 08-12
CRV 2012+ = 2012
RX270/350 10+ = 10
QASHQAI 2+ = 
TRIBECA 05 = 05 
XC60 =

3 个答案:

答案 0 :(得分:0)

这是我能想到的最好的:

查找

^.*?(?<digits>\d{2}-\d{2}|\d{2,4}).*?$

替换为:

\1

以下是在线测试:http://regex101.com/r/nY6uE5

它替换所有行OK,但不匹配的行(QASHQAI 2+

应用此替换后,您可以通过将^.*[^\d-].*$替换为空字符串来删除不匹配的行。


更新:好了,现在我理解了数字模式必须以空格开头的要求。正则表达式应该是:

^.*?\s(?<digits>(\d{2}-\d{2})|(\d{2,4})).*?$

http://regex101.com/r/dN2sH9

答案 1 :(得分:0)

使用

\s(\d+[\-]?)[^+](\d+)?

您可以提取1美元和2美元来获得答案。

如果我错了,请纠正我。

答案 2 :(得分:0)

我的解决方案,但仍需要修复。
查找内容:(.+)(\s\d+)(.+=).+
替换为:$1$2$3 $2

结果几乎完成,但需要修复。

ML 12+ (W166) = 12
FREELANDER II 07+ = 07
Kuga 08-12 = 08
CRV 2012+ = 2012
RX270/350 10+ = 10
QASHQAI 2+ = 2
TRIBECA 05 = 05
XC60 = XC60