정규표현식

\b와 \B의 차이

  • -

\b와 \B의 차이

정규 표현식에서 많이 헤깔리는 표현 중 하나가 \b와 \B이다.

이녀석들의 주의점은 어떤 지점을 의미하므로 특정 문자와 매칭되는 것이 아니다!!  예를 들어 숫자에서 특정 지점을 찾아서 천단위 구분자를 넣는 등의 작업에 사용될 수 있다.

\b

\b는 word booundary를 나타낸다. 즉 문자열의 어느 한쪽은 \w에 해당하는 word character(_, a~z, A-Z, 0~9)이고 다른 쪽은 그렇지 않은 지점들이 word boundary이다. 또한 word character로 시작하거나 끝나는 지점도 \b에 해당한다.

 

\B

\B는 상대적으로 복잡하다. 일반적으로 정규표현식의 예외문자는 \대문자와 \소문자가 뜻이 상반된다. 그래서 얇게 생각해서 \B를 비 word 문자의 경계로 생각하면 오산이다. 

오히려 \B는 \b 이외의 상황들을 의미하며 아래의 상황들이 해당한다.

 - 두 word character 사이

 - 두 none word character 사이

 - none word character와 시작, 끝 위치의 사이

 - 빈 문자열

 

천단위 구분자 삽입하기

이 \B를 이용해서 첫 단위 구분자를 삽입해보자. 위의 예를 보면 모든 숫자의 자리마다 \B로 체크된 것을 볼 수 있다. 이제 개수만 잘 세어보면 된다.

non word boundary 후에 긍정 전방탐색으로 3개의 숫자 그룹이 1번 이상 나오고 부정 전방탐색으로 숫자(즉 소수점이나, 문장 끝 등)가 나온 지점이 대상이 된다.

따라서 JavaScript를 통해서 천단위 구분을 하고 싶다면 다음과 같이 처리가 가능하다.

number = "123456789.123";

myRe =/\B(?=(\d{3})+(?!\d))/g;
console.log(number, number.replace(myRe, ','))

 

'정규표현식' 카테고리의 다른 글

정규 표현식 - SQL  (0) 2020.06.13
정규 표현식 - JavaScript  (0) 2020.06.11
정규 표현식 - Java  (0) 2020.06.11
정규 표현식 - 유용한 표현들  (1) 2020.06.10
정규 표현식 - 메타문자  (0) 2020.06.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.