使用Notepad ++ Regexp替换切割线

时间:2016-10-06 06:25:14

标签: regex notepad++

我需要剪切包含6个或更多字符,连字符,然后是其他字符或符号的行。应删除连字符和其余部分。来源文:

0402CS-2
0402CS-3
0402
7812-C
0603CS-1
0603CS-2
0603CS-3

结果,我需要这个:

0402CS
0402CS
0402
7812-C
0603CS
0603CS
0603CS

为此,我使用Notepad ++ regexp替换功能。查找模式: ^([^ \ - ] {6,})\ - 。+ $ 替换模式: \ 1 但是没有选项" multiline&#34 ;,所以,符号" ^"和" $"不仅仅匹配行的开头和结尾,实际上我有结果:

0402CS
0402CS
0402
7812  <-- that's wrong!
0603CS
0603CS
0603CS

请告诉我如何修复查找模式?或者,也许还有其他少数功能强大的自由文本编辑器可以做到这一点?

2 个答案:

答案 0 :(得分:3)

g

只需使用^([^\n\-]{6,})\-.+$ ^^ ,因为\n正则表达式可以遍历下面的行,因为使用该行进行匹配。

参见演示。

https://regex101.com/r/BHO93c/1

输入

[^-]正则表达式将两行匹配为0402 7812-C行并进行匹配。 如果1不存在,请参阅演示。

https://regex101.com/r/BHO93c/2

答案 1 :(得分:2)

这是因为[^-]字符类也匹配换行符。

\n添加到其中:

^([^\n-]{6,})-.+$

请参阅the regex online demo(注意m多线修饰符(使^与该行的开头匹配,$ - 该行的结尾)和{{1在Notepad ++中默认为ON的修饰符(启用多次出现的搜索)。

请注意,当字符类位于类的开头/结尾时,在字符类中不必转义连字符,并且您永远不需要在字符类之外转义连字符。

enter image description here

相关问题