2016-10-06 1 views
1

6 개 이상의 문자, 하이픈, 다른 문자 또는 기호가있는 줄을 잘라야합니다. 하이픈과 나머지 줄은 제거해야합니다. 원본 텍스트 :메모장을 사용하여 줄 바꿈 ++ Regexp replace

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

이를 위해, 나는 메모장을 사용하여 ++ 정규 표현식 기능을 대체 : 결과

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

, 나는이 필요합니다. 패턴 찾기 : ^([^ \ -] {6}) \ -. + $ 패턴 바꾸기 : \ 1 그러나 "multiline"옵션이 없으므로 "^"및 "$"기호는 사용하지 않습니다. 't의 일치 만 줄의 시작과 끝에 실제로 나는 결과가 있습니다

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

방법 패턴을 찾아 해결하는 저를 제발 조언을? 아니면, 할 수있는 다른 소수의 강력한 텍스트 편집기가 있을까요?

답변

2

문자 클래스 [^-]이 개행과도 일치하기 때문에 이런 현상이 발생합니다.

그것에 \n을 추가

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

m 여러 수정주의 (the regex online demo을 참조하십시오 (^ 일치하는 라인의 시작과 $ 만들기 - 라인의 끝) 및 g 수정을 (검색 가능 여러 번) 메모장 ++에서 기본적으로 켜져 있습니다.

하이픈 이스케이프는 문자 클래스 내에서 클래스의 시작/끝 부분에있을 필요가 없으므로 문자 클래스 외부에서 하이픈을 이스케이프 할 필요가 없습니다. 일치를 만들기 위해 그 줄을 사용으로

+1

모두 해결책 및 유용한 조언을 해주셔서 감사합니다. – Spark13

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

    ^^ 

enter image description here

그냥 아래에 일렬로 인해 [^-]에 관한 \n을 정규식이 통과 할 수 사용합니다.

데모보기 입력

0402 7812-C 정규식 1 라인으로 두 줄을 일치하고 일치하게하기위한

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

. 0402이 없으면 데모를보십시오.