http://1004lucifer.blogspot.com/2019/06/regex.html

특정 문자열이 들어있는 라인을 제외하고 어떻게 문자열을 추출할 수 있을까 하다가 알아보았다.

특정 문자열이 포함되지 않게 매칭하는 방법은 아래와 같다. 1004lucifer

^((?!단어).)*$

복수개의 단어에 대해서 문자열을 제외하고 싶다면 다음과 같이 할 수 있다. 1004lucifer

^((?!단어|단어).)*$

1004lucifer

복수개의 단어가 동시에 없어야 한다면 다음과 같이 할 수 있다. (이 방법은 지난번 링크-정규표현식 AND 연산 사용방법 을 응용해 봤다.)

^((?!(?=.*단어)(?=.단어)).)$ ^((?!(?=.*단어)(?=.*단어)(?=.*단어)(?=.단어)).)$

매칭되는 원리

  1. negative lookahead 를 이용하면 해당 단어와 일치하지 않은 단어의 앞에있는 문자열이 매칭된다.

1004lucifer

  1. 해당 매칭문자열에 점(.) 하나 붙여서 글자를 하나더 추가 매칭이 가능

  1. 해당 문자열 앞에 단어 대신 시작(^)을 붙여서 해당 문자열로 시작되지 않는것만 매칭