[RegExr] lookarond 공부 - live-small/problem-solving- GitHub Wiki

정규표현식, lookaround

  1. 공부하게 된 이유
    프로그래머스 파일명정렬 문제를 풀던 중, 뒤에 숫자가 나오기 전의 값을 패턴으로 표현할 수 없을까..하고 검색 중에 발견.

  2. what is this ?
    정의한 패턴에 전방, 후방에도 조건을 붙여 세밀하게 정규표현식을 이용할 수 있다.

  3. 종류

    • lookahead

      • positive X (?=Y)
      • negative X (?!Y)
    • lookbehind

      • positive (?<=Y) X
      • negative (?<!Y) X
  4. 설명
    X (?=Y) 경우, 뒤에 Y가 있다면 X를 매칭 결과로 반환한다.
    X (?!Y) 경우, 뒤에 Y가 없다면 X를 매칭 결과로 반환한다.
    EX) /w.*(?=github)/라면, 뒤에 github이 있는 앞의 값이 반환된다

  5. 특징
    lookaround 패턴(Y)은 매칭 결과에 포함되지 않음.
    positive는 일치하는 값을, negative는 일치하지 않는 값을 찾음.

  6. 활용
    파일명정렬 ["img12.png", "img10.png", "img02.png", "img1.png", "IMG01.GIF", "img2.JPG"]

    여기서 숫자 앞의 값만 결과값으로 받으려면 어떻게 패턴을 짜야할까?

    • lookahead positive /^[a-zA-Z-\s]+(?=\d)/gi
    • lookahead negative /^((?!\d).)+/gi
  7. 참고
    전체소스코드


연습할 곳
https://regexr.com/

참고한 자료
https://1004lucifer.blogspot.com/2019/06/regex.html
https://elvanov.com/2388

읽어볼 자료
http://www.regular-expressions.info/lookaround.html
vs code에서 정규표현식 이용 https://elvanov.com/2384