我需要剪切包含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
请告诉我如何修复查找模式?或者,也许还有其他少数功能强大的自由文本编辑器可以做到这一点?
答案 0 :(得分:3)
g
只需使用^([^\n\-]{6,})\-.+$
^^
,因为\n
正则表达式可以遍历下面的行,因为使用该行进行匹配。
参见演示。
https://regex101.com/r/BHO93c/1
输入
[^-]
正则表达式将两行匹配为0402
7812-C
行并进行匹配。
如果1
不存在,请参阅演示。
答案 1 :(得分:2)
这是因为[^-]
字符类也匹配换行符。
将\n
添加到其中:
^([^\n-]{6,})-.+$
请参阅the regex online demo(注意m
多线修饰符(使^
与该行的开头匹配,$
- 该行的结尾)和{{1在Notepad ++中默认为ON的修饰符(启用多次出现的搜索)。
请注意,当字符类位于类的开头/结尾时,在字符类中不必转义连字符,并且您永远不需要在字符类之外转义连字符。