2017-12-18 4 views
0

행의 n 번째 (공백을 말합니다) 공백 문자 만 일치시킨 다음 해당 공백을 줄 바꿈으로 바꾸십시오 (모든 줄에 본질적으로 4 단어/4 공란 이내). 메모장 ++의 REPLACE 행에서, 일반적으로 \ r \ n이 트릭을 수행 할 것이라고 생각합니다. 그리고 그것은 문제를 일으키는 FIND 패턴입니다.메모장 + + 정규식 행의 공백 문자의 N 번째 인스턴스를 찾으십시오.

나는 이것이 비어있는 비교적 단순한 정규식 해결책이 있다는 것을 알고 있지만, "라인에서 패턴의 N 번째 인스턴스 찾기"유형 정규식 응답은 내가 원한 것에 가장 근접한 정규식이다. 그 줄의 다섯 번째 공백 앞에있는 모든 것과도 일치합니다. 너무 많이 잡는 코드가 있습니다.

^(?:\S+\s){5} 

는 내가 \ "의 S를 +"알고 아마 없을해야하지만, 내 시도는 모두 어떤 식 으로든에 실패한

^(\s){5} 

이하이에 몇 가지 기본적인 변화까지이 코드를 페어링.

그래서 여기에 정규식의 텍스트 결과가 있어야합니다.

FROM :

This line is too long. I want to shorten it. 

This line is too long. I would really like to know why my regex is not working. 

TO :

This line is too long. 

I want to shorten it. 

This line is too long. 

I would really like to 

know why my regex is 

not working. 

답변

1

사용 찾기에서 다음 정규식 :

((?:\S+\s){4}\S+)\s

Demo

그런 다음 \1\r\n으로 바꿉니다.

이것은 기본적으로 다섯 번째 공간까지 모든 것을 캡처 한 다음 첫 번째 캡처 그룹 (\1)으로 대체 한 다음 \r\n으로 바꿉니다. \s+에 대한

가 먼저 검색 및 하나의 공간을 모두 바꾸기 : 기존 줄 바꿈을 유지하지로 확인하는 경우

0

,이에 대한 간단한 해결책은 다음과 같이 두 개의 별도의 교체 작업을 수행하는 것입니다.

$1\r\n 
:

(\S+ \S+ \S+ \S+ \S+)\s 

가와 "모두 바꾸기"마십시오

을 찾으 :

그런 다음이 교체 할