假设文本文件大约有40k行
Color LaserJet 8500, Color Laserjet 8550, Color Laserjet 8500N, Color Laserjet 8500DN, Color Laserjet 8500GN, Color Laserjet 8550N, Color Laserjet 8550DN, Color Laserjet 8550GN, Color Laserjet 8550 MFP,
作为例子
任何能够帮助我使用一个可以在数字之后删除所有数据的注册表,但在逗号之前?这样8500N就变成了8500
最终结果将是
Color Laserjet 8500, Color Laserjet 8550, Color Laserjet 8500, Color Laserjet 8500, Color Laserjet 8500, Color Laserjet 8550, Color Laserjet 8550, Color Laserjet 8550, Color Laserjet 8550,
令任何人可以以某种方式建议在记事本++(或其他易于使用的程序)中删除重复的最佳方法的惊人奖励荣誉
答案 0 :(得分:2)
您应该将(?<=\d)[^\d,]+(?=,)
的每个匹配项替换为空字符串。
以上正则表达式为:“数字和逗号之间的任何一个或多个非数字和非逗号字符”。
如果您在字符串(或行)的末尾可能会遇到带有尾随字母的数字,并且您也想要修剪,即使后面没有逗号,也请使用(?<=\d)[^\d,]+(?:(?=,)|$)
它读起来类似,只是在第一个含义后面加上“或字符串结尾”。
的更新强> 的
由于Notepad ++似乎不支持正则表达式外观,因此解决方案是将(\d)([^\d,]+)(,)
替换为\1\3
或将(\d)[^\d,]+(,)
替换为\1\2
。
答案 1 :(得分:0)
这个怎么样:
(.*?\d+)\D*(,)
它将匹配整个事物,但你可以抓住第1组和第2组。这将省略数字和逗号之间的非数字。
替换将是:
\1\2
Here is a SO that elaborates that this is the only way to do this.
或者,正如Arithmomaniac建议的那样,你可以在一个小组中执行此操作,在每场比赛后添加逗号
(.*?\d+)\D*,
替换将是
\1,
答案 2 :(得分:0)
记事本++中正则表达式的截图...