정규식으로 다중 긍정 부정 조건을 걸어보자

정규식에 여러 긍정과 부정 조건을 성공적으로 걸어봤다.

요는 () 괄호 여러개로 구성한다.

  • 괄호는 중첩될수 있다. (()())
  • 여러개의 괄호를 포함할 수 있다.
  • 해당 괄호 안에 긍정의 경우, (?=) 로 시작한다.
  • 해당 괄호 안에 부정의 경우, (?!) 로 시작한다.

예시

"<공백0개이상으로 시작하고 주석처리가 되지 않은 라인이며>, <이후 0개 이상으로 시작하고 문자가 'host'로 시작하지 않으면서>, <이후에 공백 0개 이상으로 시작하고 문자가 'nameserver'로 시작하면서, 'nameserver'뒤에, <이후에 1개 이상의 공백과 있으면서 그 뒤에 10.10.10.10이어서는 안된다.>>"
라는 조건으로 작성해보자.

'(?=^\s*(?!#))(?=^\s*(?!host))(?=^\s*nameserver(?!\s+10\.10\.10\.10)).*'

정규식은 많은 조건을 대변할 수 있어서 정말로 유용하다~