如何在Notepad ++中使用正则表达式替换每行的前2个匹配项

时间:2016-05-24 19:36:20

标签: regex notepad++

我尝试将每行的前2 -个字符转换为|,从而将文件名列表解析为CSV文件。问题是文件名本身也包含我正在搜索的字符。

我的原始数据如下所示:

12055371-1-Florence - BW Letter of Intent HB Comments 9-4-14-2.DOCX
12057668-2-EB-DUE-M- SBuxbaum FHA Benefit Plans-2.DOCX
12058210-1-Redline Letter of Intent-2.PDF
12058029-3-Florence Hospital--Order Establishing Bid Procedures-HB 9-23-14-2.DOCX 
12058020-10-Florence - BW Letter of Intent 10,10,14 Revisions-2.DOCX 

使用Notepadd ++即时替换,但我不确定正则表达式将用于识别和替换这些项目。

1 个答案:

答案 0 :(得分:3)

不匹配-,匹配行的开头直到第二个-

match ^(.*?)-(.*?)-
replace by \1|\2|

说明:

  • ^匹配行的开头(0宽度匹配)。
  • (.*?)以非贪婪的方式匹配任何字符:如果下一个字符可以匹配,它将允许它这样做。结果已分组,以便稍后引用。
  • \1\2是反向引用,指的是两个(.*?)组。

注意:为了提高效率,你可以用被忽略的类[^\-]替换非贪婪的匹配,这意味着每个字符--被转义,因为它是' sa在这种情况下的特殊性格。然后这些小组将成为([^\-]*)。当然,如果它是一次性操作并不重要。