단어가 포함되지 않은 줄을 일치시키는 방법
이 질문에 이미 답변이 있습니다.
Python 스타일의 Regex를 사용하여 특정 단어를 포함하지 않는 줄을 일치시키는 방법이 궁금합니다 (Python 함수를 포함하지 않고 Regex 만 사용)?
예:
PART ONE OVERVIEW 1
Chapter 1 Introduction 3
"PART"라는 단어가 포함되지 않은 줄을 일치시키고 싶습니다?
감사합니다.
이것은 작동합니다.
/^((?!PART).)*$/
줄의 시작 부분에서만 제외하고 싶다면 (그렇지 않지만 참고로) 다음을 사용할 수 있습니다.
/^(?!PART)/
편집 (요청시) :이 패턴이 작동하는 이유
(?!...)
구문은입니다 부정적 예측 난 항상 설명하기 힘든 것으로 나타났습니다. 기본적으로 "이 지점 뒤에 오는 것은 정규 표현식과 일치하지 않아야합니다 /PART/
."라는 의미입니다. 내가 링크 한 사이트는 이것을 내가 할 수있는 것보다 훨씬 더 잘 설명하지만, 이것을 분해하려고 노력할 것입니다.
^ #Start matching from the beginning of the string.
(?!PART) #This position must not be followed by the string "PART".
. #Matches any character except line breaks (it will include those in single-line mode).
$ #Match all the way until the end of the string.
((?!xxx).)*
관용구는 아마 가장 어려운 이해하는 것입니다. 우리가 보았 듯이, (?!PART)
앞의 문자열 을보고 다음에 오는 것은 무엇이든 subpattern과 일치 할 수 없다고 말합니다 /PART/
. 그래서 우리가하고있는 ((?!xxx).)*
것은 한 글자 씩 문자열을 살펴보고 그들 모두에 규칙을 적용하는 것입니다. 각 문자는 무엇이든 될 수 있지만 해당 문자와 그 뒤에 오는 몇 개의 문자를 취하면 PART 라는 단어를 얻지 않는 것이 좋습니다 .
^
및 $
앵커는 규칙이 처음부터 끝까지, 전체 문자열에 적용 할 수 있음이 요구한다. 이러한 앵커가 없으면 PART로 시작하지 않은 문자열 조각이 일치합니다. 심지어 PART (예를 들어) 문자 A는 정확한 문자열 다음에되지 않기 때문에 그 자체가, 거기에 일치하는 것 PART .
우리가 않기 때문에 ^
하고 $
있는 경우, PART는 어디 문자열 있었다, 문자 중 하나와 일치하는 것이다 (?=PART).
전반적인 경기는 실패합니다. 도움이 될만큼 명확하기를 바랍니다.
참고 URL : https://stackoverflow.com/questions/6259443/how-to-match-a-line-not-containing-a-word
'developer tip' 카테고리의 다른 글
R 내에서 깨끗한 R 세션을 종료하고 다시 시작 하시겠습니까? (0) | 2020.10.10 |
---|---|
Python Flask 의도적 인 빈 응답 (0) | 2020.10.10 |
(1, eval) ( 'this') 대 eval ( 'this') JavaScript에서? (0) | 2020.10.10 |
R이 축약 된 축 레이블 플로팅을 중지하도록 강제합니다 (예 : ggplot2의 1e + 00). (0) | 2020.10.09 |
Python- "OpenGL.error"로거에 대한 처리기를 찾을 수 없습니다. (0) | 2020.10.09 |