[regex] 한 줄에있는 단어 사이에 둘 이상의 공백이있는 항목을 검색하는 방법

한 줄에있는 단어 사이에 둘 이상의 공백이있는 항목을 검색하는 방법

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]


답변

간단한 솔루션 :

/\s{2,}/

이것은 하나 이상의 공백 문자의 모든 발생과 일치합니다. 전체 행과 일치해야하지만 두 개 이상의 연속 된 공백 문자가 포함 된 경우에만 :

/^.*\s{2,}.*$/

공백이 연속적 일 필요가없는 경우 :

/^(.*\s.*){2,}$/


답변

이 정규식은 모든 공백을 선택합니다. 이것을 사용하고 단일 공백으로 바꿀 수 있습니다.

\s+

파이썬 예제

result = re.sub('\s+',' ', data))


답변

검색 [ ]{2,} . 이렇게하면 줄 내에서 두 개 이상의 인접한 공간을 찾을 수 있습니다. 또한 선행 및 후행 공백과 완전히 공백으로 구성된 행과 일치합니다. 원하지 않으면 Alexander의 대답을 확인하십시오.

사실, 괄호는 생략 할 수 있습니다. 명료 함을위한 것입니다 (그렇지 않으면 반복되는 공백 문자가 잘 보이지 않습니다. :)).

문제는 \s{2,}그것은 또한 줄 바꿈에 의해 표시되는 Windows 파일에 줄 바꿈 (일치한다는 것입니다 CRLF거나 \r\n하는 일치를 \s{2}.

여러 개의 탭과 공백도 찾으려면을 사용하십시오 [ \t]{2,}.


답변

여기 내 해결책이 있습니다.

[^0-9A-Z,\n]

이것은 모든 숫자, 쉼표 및 새 줄을 제거하지만 데이터 세트와 같은 중간 공백을 선택합니다.

  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB

답변