정규표현식에 대해 생소한 분들은 초/중급 포스팅을 참고하세요. 
정규표현식 초급정규표현식 중급 


 여기서는 자주 사용되지는 않지만..
잘 알고 사용하면 여러가지로 유용한 내용들에 대해 다뤄보고자 합니다.

1. 단어 경계 - \b, \B 
 매칭하고자 하는 패턴의 단어 경계를 지정하는데 사용. 

단어의 경계를 찾는 '
\b'옵션을 사용하면
문자열 중 일부에만 매칭되는 경우는 제외하게 된다. 
====================================
  
표현식  \bart\b
  
문자열  The art of music part of artist
==================================== 

'
\B' 는  '\b'와 반대의 의미로 사용된다. 


2. 비 캡처 그룹 - (?: )
그룹화 기호를 사용해서 매칭을 시도할 경우 
매칭되는 내용은 캡처되어 추후에 재사용 할 수 있도록 한다. 

하지만, 재사용할 일이 없을 경우 
비 캡처 그룹으로 표현해주므로써 캡처 그룹에서 제외시키고,
적지만 성능 향상도 기대할 수 있다. 
====================================
  
표현식  (?:one|two|three)
==================================== 


3. 명명 재참조 - (?P<name>) , (?<name>)혹은 (?'name') 
특정한 패턴을 캡처한 후 이를 사용하기 편하도록 이름을 지어준 후
그 이름으로 캡처된 패턴을 불러다 사용.

캡처된 값들에 이름을 지정해주므로써 보는 사람 관점에서도 이해하기 쉽도록 도와주고, 
특정 위치의 값을 저장해두었다가 다른 위치에서 동일한 값이 나오는지 확인 하는데 유용함.

방식은 크게 세가지가 지원되며, 버전에 따라 지원되지 않는 것도 있을 수 있다. 
값을 캡처하고 명명 할 때와 이를 호출해서 사용 하는 방법은 다음과 같다. 

     명명              =>                 호출 
(?P<name>)        =>              (?P=name)     
(?<name>)
          =>             \k<name>
(?'name')            =>              \k'name'


 
====================================
  
표현식1  (?P<hour>\d\d):(?P<min>\d\d)-(?P=hour)-(?P=min)
  표현식2  (?<hour>\d\d):(?<min>\d\d)-\k<hour>-\k<min>
  표현식3  
(?'hour'\d\d):(?'min'\d\d)-\k'hour'-\k'min'

  
문자열  17:53-17-53
==================================== 


4. 주석 처리 - (?# ) 혹은 (?#>     <)

정규표현식에 설명을 추가하고 싶을 때 사용.
자칫 잘못 사용하면 복잡도가 증가하여 오히려 역효과를 불러 일이킬 수 있다. 

 
====================================
  
표현식  (?#year)\d{4}-(?#mon)\d{2}-(?#day)\d{2}
 

====================================
Posted by KT한
,