2012-10-12 2 views
3

메모장 + +에서 200.000 + 라인 텍스트 파일로 작업하고 있습니다. 각 줄에는 한 단어 만 있습니다. 한 글자 (예 : I)와 두 글자 만 포함 된 단어 (예 : ,) 만 포함하는 모든 단어를 제거하고 삭제해야합니다.메모장 + + 정규식 : 모든 1 및 2 문자 단어를 찾으십시오

나는 정규식 정규식이 [a-zA-Z]{1,2}과 같이 간단 할 수 있다고 생각했으나 아무 것도 인식하지 못했습니다. (나는 그들을 표시하려고합니다.)

나는 수동 검색을 수행 했으므로 그 길이의 단어가 존재하므로 그 단어가 잘못되었다는 것을 인식 할 수 있습니다. 누구든지 메모장에서이 작업을 수행하는 방법을 알고 있습니다. ++ ???

건배,
- Mestika

답변

5

이 작동 :

^[a-zA-Z]{1,2}$ 

이 교체 빈 문자열로. ^$은 메모장 ++의 정규식이 여러 줄 모드에서 작동하기 때문에 줄의 처음과 끝의 앵커입니다.

^[a-zA-Z]{1,2}\r\n 

을 그리고 빈 문자열로 대체 :

이 검색, 완전히 선을 제거하려면

. 그러나 이것은 Notepad ++ 6 이전에는 작동하지 않으므로 최신 버전인지 확인하십시오.

\r\n을 파일의 특정 줄 끝으로 바꾸어야합니다. 팀 Pietzker 제안으로

, 또한 빈 줄을 제거하는 플랫폼 독립적 인 솔루션은 다음과 같습니다

^[a-zA-Z]{1,2}[\r\n]+ 

하지만 빈 줄을 제거하지 않는 플랫폼 독립적 인 솔루션은 하나 개 또는 두 개의 문자를 가진 사람은 다음과 같습니다

^[a-zA-Z]{1,2}(\r\n?|\n) 
+0

선을 지우는'\ r \ n '에 +1; 그것 없이는 빈 줄이 많을 것입니다. = P – newfurniturey

+1

아니면'\ r \ n '대신'[\ r \ n] +'를 쓰면 플랫폼에 독립적입니다. 그것은 또한 빈 줄은 동시에 없애 버립니다. –

+0

이 (가) 편집되었으며, 너무 많은 줄 바꿈을 제거하지 않고도 플랫폼 독립적 일 수 있습니다. –

2

내가 메모장을 사용하지 않는 ++하지만 당신은 너무 많은 경기를 가지고 있기 때문에 내 생각 엔이 될 수있다 - 단어 경계가 (당신의 특급 2 개 문자의 모든 설정과 일치합니다)를 포함하려고

당신은 단지 단어를 제거하지만, 빈 행을 남겨 둡니다
\b[a-zA-Z]{1,2}\b 
+0

멋진 ... 자바 스크립트 str.replace (/ \ b [A-Za-z0-9] {1,3} \ b/g, ") – bob

1

지정한 정규식은 당신이 생각하는 것 방법 1 또는-2 (메모장 ++의 찾기 - 대화 상자에서) 문자를 사용할 수 있지만를 찾아야한다. 당신은 정규식은 줄의 시작 부분에서 시작 respecitevely, ^$와 말에 종료 확인하고 싶지 :

^[a-zA-Z]{1,2}$ 

Notepad++ version 6.0는 PCRE 엔진을 도입, 그래서이 작동하지 않는 경우 현재 버전을 최신 버전으로 업데이트하십시오.

1

명백한 한정 기호를 지원하지 않는 Notepad ++ 버전을 사용하는 것 같습니다. 일치하지 않는 이유입니다 ({}은 특수 기호가 아닌 리터럴로 처리됩니다).

이 솔루션은 좀 더 긴 교체 사용하는 것입니다

\w\w? 

을 ...하지만이 정규식은 어떤 기호를 일치, 그냥 짧은하지 말 것 같은 즉, 이야기의 일부입니다. 이렇게하려면 다음과 같은 것이 필요합니다.

^\w\w?$ 
관련 문제