2012-08-13 5 views
3

문자열의 n 번째 문자 앞 또는 앞에 공백 문자를 찾아야합니다.문자열의 n 번째 문자 앞 또는 앞에 공백을 찾는 정규식

예, 즉 N 가정하면 20 : 문자열

Find one space in the right place 
^  ^ ^^ 
0   10  M 20 

H이 경우하는 int I은 20 위치 전에 첫 번째 공간 전에 하나를 찾아야 20 위치에 단어 "the"는 M 바로 18 위입니다.

나는

(?<=.{80}). 

같은 긍정적 인 lookbehinds를 사용하여 n 번째 문자를 찾을 수 있지만 그때는 내가 처음 공백 문자를 찾아 내가 어떻게 모를 때까지 다시 이동해야합니다.

가변 길이 lookbehinds를 지원하지 않는 notepad ++를 사용하고 있습니다. 가능하면 notepad ++에서도 정규 표현식을 사용할 수 있도록하고 싶습니다. 감사.

+0

왜 정규식 (19)을 변경? 선형 스캔만으로도 더 빠르게 작동합니다. – nhahtdh

+0

프로그래밍 언어를 사용하지 않기 때문에 – Gabber

+0

찾을 정규식 .. 찾는 것은 무엇을 의미합니까? 20 번째 캐릭터 이전의 마지막 공간의 위치를 ​​원하십니까? – FailedDev

답변

5

당신은 (제외 따옴표하지만 내부)이 정규 표현식을 사용할 수 있습니다

"^.{1,19} " 

참고 끝에있는 공간.

메모장 + 6.1.5 (게시 당시의 최신 버전)로 테스트했습니다. feature list에 따르면 정규식은 PCRE와 호환됩니다 (보이지 않는 모양이지만 고정 너비 만 사용 가능). 위의 정규 표현식은 현재 가지고있는 이전 버전에서는 작동하지 않습니다 (Notepad ++ 5.9). 당신이 다른 뭔가 공간을 교체해야하기 때문에

, 당신은 (따옴표 내부는 제외) 텍스트를 보존 만의 공간을 대체 할 그룹을 캡처 사용할 수 있습니다 :

"^(.{1,19}) " (Find) 
"\1replace_space" (Replace) 

참고 : 정규식 것 20 번째 문자 앞 또는 앞에 공백을 검색하십시오. 당신이 공간이 20 문자 앞에 엄격하고 싶다면, 정규식 사용 N = 20를 들어 18

+0

'n = 20'의 경우'^. {1,18} (\ s)'패턴 –

+0

모든 문자열이 아닌 공백이 필요합니다. – Gabber

+0

@Gabber : 공백이 20 번째 문자 인 경우 일치하는 공백이 문자가 될까요? – nhahtdh

0

(\s)\S*.(?<=^.{20})

관련 문제