2013-07-24 1 views
1

Windows 용 Notepad ++ 6.3.2의 최신 버전을 실행하고 있습니다. "개행 일치"확인란을 사용하지 않고 "정규 표현식"을 사용하여 "찾기"를 시도하면 다음 두 샘플 텍스트 파일에 선택 표시가 나타납니다. "줄 바꿈과 일치"으로 예상된다 아무것도에예기치 않게 여러 줄에 일치합니다.

hello 
world 

검색 패턴 hello.*world 일치 (이 확인란이 선택 될 때 일치) 선택되어 있지 않습니다. 그러나 패턴 hello\s*world은 위의 두 줄과 일치합니다. "일치하는 줄 바꿈"이 선택되어 있지 않으므로 예기치 않은 비트입니다. 나는 내가 사용했던 이전 버전에는 그 기능/버그가 없다고 생각한다. 단 한 줄만 뒤에 공백 문자를 매치하고 싶을 때 약간 짜증납니다.

예상 되나요?

답변

2

나는 그것을 조금 설명하려고 :

matches newlines 수 정규식의 DOTALL 플래그 (100 % 확실하지, 메모장의 소스 코드를 확인하지 않았다)한다. 즉, 점 .은 줄 바꿈도 일치합니다.

무엇을 가지고 있었는지 \s, \s 의미 공백 문자 (공백, 탭, 줄 바꿈)와 일치합니다. 그래서 그냥 그렇게 작동합니다. 그것이 말하는 인터페이스를 보면

1

는 "안녕하세요 \ sworld는"당신은 더 이상 사용하지 않는의 두 번째 경우

. "줄 바꿈과 일치" "." 정규식에서.

\ s는 \ r 또는 \ n 문자와 일치합니다.

아마도 Regex to match more than 2 white spaces but not new line의 약간의 적응은

즉 사용 "안녕하세요 [\의 t] * 세계"를 위해 일하는 것이?

+0

감사합니다. Knightsy, "\ t * *"는 "\ s *"는 단 한 줄뿐만 아니라 한 줄의 "hello"및 다음 줄의 "hello"와 같은 여러 줄의 패턴과 일치합니다. 선. "\ s *"가 선택되지 않은 "일치하는 줄 바꿈"체크 상자를 무시하는 것 같습니다. – radikyl

+0

아무것도 덮어 쓰지 않고, 체크 박스는 "dot matches newline"체크 상자이므로 정규식에서 점 (".")의 동작 만 지정하고 \ s와는 아무런 관련이 없습니다. - 어쨌든, 제 대답이 당신에게 도움이 되었기 때문에 기쁩니다. 있다면 대답 해주십시오. – Knightsy

관련 문제