regex

  • 실습 링크
  • 인프런 정규표현식: python으로 톺아보기]
  • notion link

  • ?

    • 0개 이거나 1개 이거나
    • 010-8752-403701087524037을 모두 검출하고 싶다면
    • 010?8752?4037
  • Anchors ^ & $
    - ^hello : 처음 만나는 hello
    - hello$ : 마지막에 만나는 hello
  • .
    • all occurences
  • Character Classes
    • \w : 단어 문자. 구두점 같은 특수문자는 포함하지 않음. 응용하면 [^\w]는 문자가 아닌 모든 문자를 얻을 수 있게 된다.
      • Pasted image 20230515150429.png
    • \w{5} : 5개의 글자와 공백 하나
    • \W 단어가 아님(?) ==> 알파벳 & _
    • \d : 숫자
    • \D : not 숫자
    • \s : 공백문자
    • \S : not 공백문자
  • []
    • optional occurences
    • [Hh]ello ==> hello, Hello
    • 구간
      • [0-9]
      • [a-zA-Z]
    • 반복 (수량자)
      • 예를 들어 전화번호를 쿼리하는 정규표현식은 다음과 같이 작성할 수 있다.
      • 010[-,. ]?[0-9][0-9][0-9][0-9][-,. ]?[0-9][0-9][0-9][0-9]
      • 하지만 [0-9]가 너무 자주 오는 것 같은데 => {n}을 사용하여 반복을 줄일 수 있다.
      • 010[-,. ]?[0-9]{4}[-,. ]?[0-9]{4}
      • {3} 3개
      • {3,} 3개 이상
      • {1, 3} 1~3개
    • 부정
      • 대괄호 안에 들어있는 ^(caret)은 부정의 의미.
      • [^a-zA-Z0-9] : 대괄호 안에 명시된 패턴을 제외한 나머지 문자열을 찾는다.
  • 서브그룹
    • (on|ues|rida) : |를 기준으로 여러개를 묶는다.
  • flags : 정규표현식 맨 마지막에 /를 붙이고 뒤에 키워드를 붙임
    • global
    • case insensitive
    • multiline
    • single line