1. 정규표현식의 의미
- 정규표현식(正規表現式, Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.
2. 정규표현식의 특징
1) 대소문자를 구분함
2) 띄어쓰기 수를 구분함
3. 정규표현식의 패턴
1) 기본패턴
패턴 | 설명 | 예시 | 예시설명 |
---|
^ (캐럿) | 시작하는 문자열 찾음 | ^W | 'W'로 시작하는 문자열 찾기 |
$ (달러) | 끝나는 문자열 찾음 | W$ | 'W'로 끝나는 문자열 찾기 |
. (애니) | 문자 or 숫자 or 공백 하나 | ... | 문자열 길이가 3글자 이상인 것을 찾기 |
[] (브라켓) | [] 안에 있는 문자열 찾음 | [dH]. | 'd+문자(.)' or 'H+문자(.)' 문자열 찾기 |
- (레인지) | 해당하는 범위의 문자열 찾음 | A-C | 'A'부터 'C'까지 |
[^문자] (부정) | 괄호 안에 문자를 포함하지 않는 문자열 찾음 | [^ABC] | 'A' or 'B' or 'C'를 제외한 문자열 찾기 |
2) 서브패턴
패턴 | 설명 | 예시 | 예시설명 |
---|
(|)(or) | 또는 | (on|yes|day) | 'on' or 'yes' or 'day' 문자열 찾기 |
3) 수량자(Quantifiers)
- 수량자(Quantifiers): 어떠한 패턴이 얼만큼 등장하는가
수량자 | 설명 | 예시 | 예시설명 |
---|
* | 0개 이상 나타나는 문자 | a*b | 'a'가 앞에 있을수도있고 여러개 있을수도 있고 'b'도 뒤에 있을수도 있고 여러개 있을 수도 있음 'aab', 'ab', 'b'모두 가능 |
+ | 1이상 나타나는 문자 | a+b | 'a'가 한개이상, 'b'도 한개 이상 있어야 함 |
? | 없거나 1개인 경우 | a?b | 'a'가 없거나 한개, 'b'가 없거나 한개 |
{m,n} | m회 이상 n회 이하 나타나는 문자 | [els]{1,3} | 'e' or 'l' or 's'가 1개 이상 3개 이하 |
? | 없거나 1개인 경우 | a?b | 'a'가 없거나 한개, 'b'가 없거나 한개 |
4) 패턴의 활용
패턴 | 설명 |
---|
r.*? | * 뒤에 '?' 오면(수량자 뒤에 ?가 오면) * 수량자의 가장 최소단위인 '0'을 뜻함 즉, r뒤에 '.'은 0이라는 뜻이라서 오직 'r'만 나타냄 |
r.+? | '+' 수량자의 가장 최소 단위인 1을 나타냄 즉, 'r'과 'r' 다음 나오는 문자 하나 |
r.?? | '?'의 최소단위인 0을 나타내면서 오직 'r'만 나타냄 |
5) 탐욕적인 수량자(Greedy Quantifiers), 게으른 수량자(Lazy Quantifiers)
(1) 탐욕적인 수량자(Greedy Quantifiers)
- 수량자 선택:
<div>.+</div>
- 대상:
<div>test</div><div>test2</div>
- 이중 'test'와 'test2'를 따로 선택하고 싶어도 위와 같이 수량자를 선택하면
<div>test</div><div>test2</div>
전체가 한개로 선택 됨 = Greedy Quantifiers
(2) 게으른 수량자(Lazy Quantifiers)
위의 예에서 수량자 선택을 <div>.+?</div>
이렇게 하게되면 만족하는 부분만 선택하게 됨(만족하는 부분이 여러개라면 여러개 선택 됨)-> 탐욕적인 수량자는 처음 만족하는 부분부터 마지막 만족하는 부분까지 모두 선택
6) 경계
패턴 | 설명 | 예시 | 예시설명 |
---|
\w | 'w' = 문자,숫자, _ 의미 | | |
\w* | 0이상의 문자, 숫자, _ 의미 | | |
\W | 문자,숫자, _ 를 제외한 것 의미(w의 반대) | | |
\d | 숫자의미 | | |
\D | 숫자를 제외한 모든 것 | | |
7) Assertions
패턴 | 설명 |
---|
\w+(?=X) | '?='은 뒤에오는 문자로 검색해서 문자를 찾지만 선택에서는 제외하라는 뜻 |
4. 이스케이프(Escape)
- Escape: 정규표현식 패턴이 아닌 문자로 사용하고 싶을때는 앞에
\
(역슬래시)를 앞에 붙이기
*참고
생활코딩 강의: https://opentutorials.org/module/622/5143
사이트: http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents
블로그: https://yurimkoo.github.io/analytics/2019/10/26/regular_expression.html