참고
[Regex] 정규표현식 특정 문자열 포함하지 않는 매칭 방법 (1004lucifer.blogspot.com)
특정문자 제외, 특정문자 포함
^((?!import|package).)*blog.*$
import 또는 package로 시작하지 않고 blog를 포함하는 라인
[Regex] 정규표현식 특정 문자열 포함하지 않는 매칭 방법
특정 문자열이 들어있는 라인을 제외하고 어떻게 문자열을 추출할 수 있을까 하다가 알아보았다.
특정 문자열이 포함되지 않게 매칭하는 방법은 아래와 같다.
1004lucifer
^((?!단어).)*$
![](https://blog.kakaocdn.net/dn/dqM3ke/btrUEvyqNAX/FDnSea2qznrZ6F7Vm6j4L0/img.png)
복수개의 단어에 대해서 문자열을 제외하고 싶다면 다음과 같이 할 수 있다.
1004lucifer
^((?!단어|단어).)*$
![](https://blog.kakaocdn.net/dn/UsYcz/btrUBce4SeG/CiGX3geTiZ0cKRSXiOk2Q1/img.png)
1004lucifer
복수개의 단어가 동시에 없어야 한다면 다음과 같이 할 수 있다.
(이 방법은 지난번 링크-정규표현식 AND 연산 사용방법 을 응용해 봤다.)
^((?!(?=.*단어)(?=.*단어)).)*$
^((?!(?=.*단어)(?=.*단어)(?=.*단어)(?=.*단어)).)*$
^((?!(?=.*단어)(?=.*단어)(?=.*단어)(?=.*단어)).)*$
![](https://blog.kakaocdn.net/dn/bvpVDV/btrUyh2hF4S/it7kyuuS2IOW2StNVVKtL1/img.png)
매칭되는 원리
1. negative lookahead 를 이용하면 해당 단어와 일치하지 않은 단어의 앞에있는 문자열이 매칭된다.
![](https://blog.kakaocdn.net/dn/FnnXR/btrUyhOKwOS/5fnlfYCN0Vz72ItUxEq351/img.png)
1004lucifer
2. 해당 매칭문자열에 점(.) 하나 붙여서 글자를 하나더 추가 매칭이 가능
![](https://blog.kakaocdn.net/dn/5G7dc/btrUKmNNdEq/18v8SxbYxNn8nw7qS06Y21/img.png)
3. 해당 문자열 앞에 단어 대신 시작(^)을 붙여서 해당 문자열로 시작되지 않는것만 매칭
![](https://blog.kakaocdn.net/dn/YPMJc/btrUIYTWRZ0/KhJpI48pHGnSDtqU3OX6NK/img.png)
4. 그룹화를 해서 해당 문자열 제외한 앞에까지 모두 매칭
![](https://blog.kakaocdn.net/dn/cAtKpB/btrUIlBNe3R/vGJnS3wHfmZlaLF17jJfK0/img.png)
5. 마지막까지 모두 매칭되면 추출 완료
![](https://blog.kakaocdn.net/dn/Qpfw1/btrUxoUCznZ/M5Wjlg4pSm4usrNpPpUwek/img.png)
'개발환경, 도구 > 유틸' 카테고리의 다른 글
Ngrok - 외부에서 내 로컬로 접속하는 방법 (0) | 2024.04.08 |
---|---|
ruby asciidoc-pdf 사용 (spring rest docs, intellij asciiDoc plugin 한글 네모로 깨짐) (0) | 2023.11.06 |
c 드라이브 부족으로 d 드라이브에서 가져오기 (0) | 2023.09.07 |
윈도우 cmd 에서 포트에서 사용중인 프로세스 번호를 확인하여 중단 (0) | 2023.08.03 |