developer tip

단어가 포함되지 않은 줄을 일치시키는 방법

optionbox 2020. 10. 10. 09:57
반응형

단어가 포함되지 않은 줄을 일치시키는 방법


이 질문에 이미 답변이 있습니다.

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

반응형