정규 표현식 Regular Expression
흔하게 Regex, Regexp로 부른다!
사전적 의미) 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
→ 패턴을 통해서 필터링을 할 수 있도록 하는 식!
정규 표현식의 기본 - 메타 문자
메타문자? 특정한 문자 및 문자 계열을 대신하여 표시하는 문자! → 특정한 규칙을 지닌 여러 단어를 하나의 패턴으로 축약할 수 있다.
^ : 문자열의 시작을 의미
$ : 문자열의 종료를 의미
정규 표현식의 기본 - 문자 클래스
\b : 문자열의 공백 사이를 의미. blank
\B : 문자열의 공백이 아니라는 것을 의미. \b의 의미와 반대의 의미
For Example)
\bplay\b → I want to play the game on the playground
\s : Tab, Null 등 모든 공백문자에 매칭. \t\n\r
\S : \s의 반대 의미
\d : 모든 숫자를 의미.
정규 표현식에서는 범위를 표시할 때, 0-9와 같은 방법으로 범위를 표시합니다. [0-9a-zA-Z]
\D : 숫자가 아닌 것을 의미
\w : 문자 자체를 의미. [a-zA-Z0-9_]와 동일한 의미
\W: \w에 포함되지 않는 모든 문자를 의미
"." : Wild Card. 모든 패턴에 일치
선택 패턴
Pipe | : OR의 의미
For Example)
mac | windows : mac이라는 문자열 또는 windows라는 문자열 패턴과 일치하는 모든 것
💡 근데, 한 글자만 달라지는 패턴도 사용하고 싶은데?
→ 대괄호를 통해서 여러 문자를 OR의 요소로 사용할 수 있다!
For Example)
[bcf]all Regex → ball, call, fall의 문자열 패턴에 매칭된다!
수량 한정자
수량 한정자를 통해서 특정 패턴이 N개 만큼 나올 수 있도록 정규 표현식을 설계할 수 있다!
? : 바로 앞의 글자 혹은 글자 그룹이 있을 수도 있고 없을 수도 있음.
For Example)
takes? : take 혹은 takes만 매칭
* : 바로 앞의 글자 혹은 그룹이 0개 이상이라는 의미
+ : 1개 이상이라는 의미
{n}: n개 이상이라는 의미
{n.m} : n개 이상 m개 이하를 의미
그룹 만들기
() 소괄호를 통해서 문자열의 그룹을 만들 수 있는데, 수량 한정자를 통해서 해당 그룹이 n번 만큼 반복되는 패턴을 설계할 수 있다!
(over|inst)all = overall | install : 두 개의 정규 표현식 모두 같은 의미.
(m|c){4}ap : mmmmap, ccccap와 같은 패턴.
이런 식으로 특정 그룹이 반복되는 경우, 정규 표현식을 통해 깔끔하게 표현할 수 있다!
전방 탐색과 후방 탐색
특정 문자열을 기준으로 앞이나 뒤를 찾고 싶다!
전방 탐색
?= 를 사용해서 다음에 오는 문자열을 기준으로, 이전의 문자열에만 해당 패턴을 적용한다!
For Example)
\w*(?=:) → https://www.google.com
후방 탐색
?< = 를 사용해서 다음에 오는 문자열 기준으로, 이후의 문자열에만 패턴을 적용한다!
For Example)
(?<=\$)[0-9.]+ → 초콜릿: $10.00
동시 사용
(?<=(<div>)).*(?=(<\\/div>)) → <div>123</div>
부정전방탐색과 부정후방탐색
어렵다…!
💡 긍정형 : 찾고자 하는 부분의 앞뒤를 지정해서 문자열 탐색
부정형 : 지정한 패턴과 일치하지 않는 문자열 탐색
긍정형에서는 ?= , ?<= 같이 = 으로 긍정을 표현하고, 부정형에서는 ! 를 사용하여 부정을 표현
부정형 전방탐색
(?!)
For Example)
^((?!Hee).)*$→
Hwang Heesang (X)
Kim Heesang (X)
Kim MinSu (O)
특정 이름의 패턴이 들어가는 것을 방지할 수 있다!
부정형 후방탐색
(?<!)
For Example)
\b(?<!\$)\d+\b →
I paid $30 for 100 apples, 50 oranges, and 60 pears.
I saved $5 on this order.
정규 표현식 공부해보기
RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs
Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac
regexone.com
정규 표현식 테스트
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
'공부' 카테고리의 다른 글
[Kafka] Kafka Admin과 Admin Client (0) | 2024.11.22 |
---|---|
[Elastic Search] Elastic Search란? (1) | 2024.10.24 |