/practical_regexp

호갱노노 개발자를 위한 속성 과외 (정규식 편)

Practical Regular Expression

글로벌 플래그와 커서

  • 커서 초기화 (jsbin)
  • 글로벌 플래그를 활용한 while 구문 (jsbin)

그룹

  • 그룹 상수 (jsbin)
  • 그룹 상수 + while (jsbin)

멀티라인

  • 멀티라인 플래그 활용 (jsbin)

한글

  • \w는 한글을 포함하지 않음 (regexp)
  • [\wㄱ-ㅎ가-힣] (regexp)
  • 개행과 유니코드를 포함한 모든 문자 ([\s\S]) (regexp)

Positive/Nagative lookahead

  • ?=, ?! (regexp)
    • regex1(?=(regex2)) : Positive Lookahead : regex1 다음 regex2의 정규표현식이 일치할 경우 반환
    • regex1(?!(regex2)) : Negative Lookahead : regex1 다음 regex2의 정규표현식이 일치하지 않을 경우 반환
    • (?<=(regex2))regex1 : Positive Lookbehind : regex2의 정규표현식이 일치하고 regex1가 나올 경우 반환
    • (?<!(regex2))regex1 : Negative Lookbehind : regex2의 정규표현식이 일치하지 않고 regex1가 나올 경우 반환

출처: https://unlimitedpower.tistory.com/entry/정규표현식-이것이-고급이다-Positive-Negative-Lookahead-Lookbehind [오늘도 공장은 돌아간다.]

Greedy vs Non-Greedy

  • 수량자 뒤 ? = non-greedy (jsbin)

조합

  • 모두 정규식으로 해결하려고 하면 복잡해지고 디버깅하기 어려움 (jsbin)

테스트 코드

  • 복잡한 정규식은 테스트 코드를 남겨두면 디버깅하기 좋음 (jsbin)