ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [정규표현식] \b
    스터디플래너/공부하기 2021. 12. 5. 10:01

     

    회사에서 맡은 업무 중 정규표현식을 사용하는 경우가 많다. 쇼핑몰을 만들었던 프로젝트에서 회원가입할 때 아이디나 휴대폰 번호를 검증하는데 사용하긴 했지만 내가 잘 알고 썼다기보다 검색을 이용했다. 아이디, 휴대폰 번호 등 형식이 정해진 것들에 정규표현식을 사용하기보다 회사 업무에 맞춰 정규표현식을 사용하다보니 미리 공부해야겠다는 생각이 들었다. 모던 자바스크립트(https://ko.javascript.info/)를 이용해서 공부하려고 했지만 5번 자료까지만 번역이 되어있고 그 뒤론 모두 영어이다. 내가 번역에 기여할 자신은 없고 개인적으로 정리하며 공부하면 좋지 않을까 싶어 블로그에 남긴다.

     


     

    단어 사이의 경계를 구분짓는 \b

     

     문자열의 시작을 판단하는 조건인 캐럿(^), 문자열의 끝을 판단하는 조건인 달러($)기호처럼 단어와 단어사이의 경계를 판단하는 조건으로 \b가 있다. \b는 문자열에서 단어가 경계에 있는지 확인하는 역할을 한다. \b는 서로 다른 세 개의 위치에서 단어의 위치인지 확인한다.

    1. 문자열의 시작점에서 첫번재 문자열인지
    2. 문자열에서 두 문자들 사이에서 한 쪽은 단어의 문자가 있고, 한 쪽은 없는지
    3. 문자열 끝에서 문자열 마지막 단어가 단어의 문자인지 확인인지

     

    Hello는 조건식 문자의 첫번째 문자가 \b이고, 'Hello, Java' 중 Hello가 있다. 그리고 o와 ,(콤마) 사이에 \b가 있다. Hell은 첫번째 조건과 두번째 조건은 충족하지만 세번째 조건이 충족하지 않는다. 조건은 l과 \b 다음에 공백이 와야하지만 str는 o가 있기 때문이다.

     

    Java와 Java!도 마찬가지이다. Java는 세가지 조건을 만족하지만 Java!는 느낌표(!)가 영어도 아니고 숫자도 아니고 '.'도 아니다. \b 조건에 따르면 Java| |! 이와 같이 Java와 느낌표(!)사이에 경계가 있다. 따라서 Java!의 경우 null을 제공한다. 만약 str가 Java8이었다면 반대로 Java는 null을, Java8조건식은 Java8을 제공할 것이다.

     

     

    \b는 영어와 숫자의 경계만 구분할 수 있다. 라틴 알파벳이 아닌 문자나 문장기호는 이전의 영문자/숫자 사이에 경계가 있는 것으로 구분한다.

     

     


    [출처] https://ko.javascript.info/regexp-boundary

     

    Word boundary: \b

     

    ko.javascript.info

     

Designed by Tistory.