한 줄에있는 단어 사이에 둘 이상의 공백이있는 항목을 검색하는 방법
1. this is a line containing 2 spaces
2. this is a line containing 3 spaces
3. this is a line containing multiple spaces first second three four
위의 모든 것은이 정규식에 대해 유효한 일치입니다. 어떤 정규식을 사용해야합니까?
한 줄에있는 단어 사이에 둘 이상의 공백이있는 항목을 검색하는 방법
1. this is a line containing 2 spaces
2. this is a line containing 3 spaces
3. this is a line containing multiple spaces first second three four
위의 모든 것은이 정규식에 대해 유효한 일치입니다. 어떤 정규식을 사용해야합니까?
답변:
[ ]{2,}
SPACE (2 이상)
해당 공백 단어가 뒤 따르는 앞뒤를 확인할 수도 있습니다. (탭이나 새 줄과 같은 다른 공백이 아님)
\w[ ]{2,}\w
동일하지만 교체와 같은 작업을위한 공간 만 선택 (캡처) 할 수도 있습니다.
\w([ ]{2,})\w
또는 공백 앞뒤에 단어 문자뿐만 아니라 공백이 있다는 것을 확인하십시오.
[^\s]([ ]{2,})[^\s]
\w
'단어 문자', 즉 영숫자 및 밑줄을 의미하지만 다른 비 공백 문자는 의미하지 않습니다. 공백이 아닌지 확인하려면 \S
(대문자 S)를 사용하십시오. 또한 첫 번째는 두 개 이상의 공백을 포함하고 다른 것은없는 줄만 일치시킵니다.
\S
그러한 기능을 위해 대소 문자를 사용하지 않는 것을 선호하며 읽기가 더 쉽습니다.
\w[ ]{2,}\w
일치하지 word.<2 spaces>more words
않거나 완전히 공백으로 구성된 문자열입니다. [^\s]([ ]{2,})[^\s]\w
같은 공간 또는 문자열로 시작하는 라인에 실패합니다 bla<2 spaces>.
...
간단한 솔루션 :
/\s{2,}/
이것은 하나 이상의 공백 문자의 모든 발생과 일치합니다. 전체 행과 일치해야하지만 두 개 이상의 연속 된 공백 문자가 포함 된 경우에만 :
/^.*\s{2,}.*$/
공백이 연속적 일 필요가없는 경우 :
/^(.*\s.*){2,}$/
.*
이 테스트 문자열의 끝에 도달하며, 필수 문자가있는 경우, 다음과하는 모두가 일치하지 않습니다 즉, 일반적으로 욕심이다. 일반적으로이 경우 다음 ?
과 같이 추가하는 것이 좋습니다 .*?
. 그것은 PHP의 PCRE 사용하여 나에게 무슨 일이 있었
/^.*b.*$/
실제로 일치 합니다. "foobar"
.*
검색 [ ]{2,}
. 이렇게하면 줄 내에서 두 개 이상의 인접한 공간을 찾을 수 있습니다. 또한 선행 및 후행 공백과 완전히 공백으로 구성된 행과 일치합니다. 원하지 않으면 Alexander의 대답을 확인하십시오.
사실, 괄호는 생략 할 수 있습니다. 명료 함을위한 것입니다 (그렇지 않으면 반복되는 공백 문자가 잘 보이지 않습니다. :)).
문제는 \s{2,}
그것은 또한 줄 바꿈에 의해 표시되는 Windows 파일에 줄 바꿈 (일치한다는 것입니다 CRLF
거나 \r\n
하는 일치를 \s{2}
.
여러 개의 탭과 공백도 찾으려면을 사용하십시오 [ \t]{2,}
.
more than one space between words in a line
. [ ]{2,}
단어 사이 는 어때? 질문을 읽어 보셨나요?