레이블이 regexp인 게시물을 표시합니다. 모든 게시물 표시
레이블이 regexp인 게시물을 표시합니다. 모든 게시물 표시

2020년 6월 28일 일요일

정규식예제 단어 탐색 lookaround


앞에서 정규식 사용방법에 대해서 알아보았습니다.



정규식을 시험해볼 수 있는 Site도 있고요


정규식 lookaround 

이번에는 lookaround 에 대해 알아 보겠습니다. 기존 정규식은 패턴이 일치하면 결과에 포함되나 lookaround는 그냥 패턴이 일치하는 조건을 보기만 하게됩니다. 최종적으로는 결과에 포함이 되지 않습니다.


예제)

문장:1234567890 123456 012345 A123456B
6자리 숫자가 나오는 문자열 찾는 방법입니다.

원하는 결과)

1234567890 123456 012345 A123456B

답)

(?<!\w)[0-9]{6}(?!\w)

설명)

[0-9]{6} : 숫자가 여섯개 연속됨을 의미합니다.
아래 두개는 lookaround 라는것입니다. 
그 중에 4가지가 있습니다.
lookahead positive : 앞쪽 일치 확인 (?=ABC)
lookahead negative : 앞쪽 일치하지 않는지 확인 (?!ABC)
lookbehind positive : 뒤쪽 일치 확인 (?<=ABC)
lookbehind negative : 뒤쪽 일치하지 않는지 확인 (?<!ABC)
\w : 숫자나 문자를 의미합니다.
(?!\w) : 앞에 숫자나 문자가 있는지 점검해서 없는 경우에만 조건을 만족합니다.
(?<!\w) : 뒤쪽에서 숫자나 문자가 있는지 점검해서 없는 경우에만 조건을 만족합니다.
결국 앞뒤로 숫자나 문자가 없는 조건을 넣으면 독립적으로 떨어져 있는 숫자가 되게 됩니다.