- 기본적인 정규 표현식 문법을 익히고 나서, 나중에 사용하거나 이와 관련된 코드를 볼 일이 있을 때 기억이 나도록 하자.
정규 표현 (Regular Expression)
-
정규 표현식은 일련의 문자열 패턴을 정형화된 방법을 통해서 찾을 수 있도록 도와주는 문법이다.
-
다양한 언어의 정규 표현 실행을 위한 함수는 서로 다르지만, 정규 표현 자체는 개발 언어에서 동일하게 적용된다.
반복자 (Repeaters): *, +, {}
-
해당 키워드는 문자열이 얼마나 많이 반복되는지 지정해 줄 때 사용한다.
-
정규 표현에
*
를 사용하면 어떤 문자가 0번 혹은 그 이상 나올 수 있다는 것을 표현한다.
'a * b' 이면 'a' 와 'b' 사이에 0번 혹은 그 이상 출현할 수 있다는 것을 의미한다.
예를 들면, 'b', 'ab', 'aab', 'aaab', 'aa......b'가 올 수 있다.
+
(더하기)는*
와 거의 비슷하지만,*
와 다른점은 최소 1번은 나온다는 의미를 가진다.
'a + b'이면 'ab', 'aaab', 'aa.....b'는 될 수 있지만, 'b'는 될 수 없다.
{}
(중괄호)는 중괄호에 숫자를 포함하여 문자열 패턴의 반복 횟수를 설정할 수 있다.
`a{3}b` 이면, 'aaab'만 된다.
'a{3}b' 이면, 'aaab', 'aaaab', 'aaa...b'와 같이 최소 3이상 a가 나올 수 있다는 의미이다.
'a{3, 4}b'이면 'aaab', 'aaaab'가 된다. 3 ~ 4의 'a' 길이를 설정한다.
와일드 카드 (Wild Card): .
-
어떤 패턴에 대해서는 정규 표현식으로 만들기 어려운 경우가 있다. 이때 편리하게 사용하는 것이 와일드 카드인
.
(점) 키워드이다. -
이 키워드는 해당 자리에 어떤 문자든 가능하다는 의미이다.
'.'이면 하나의 어떤 문자로든 매칭될 수 있다.
'.*' 이면, 다양한 (모든) 길이의 문자열을 찾는다.
'a.b'이면, 'aab', 'abc', ..., 'a b', 'a/b' 등과 같은 모든 문자가 대응될 수 있다. 즉 a로 시작하여 b로 끝나는 길이 3의 모든 문자열로 정의 된다.
선택 문자 (Optional Character) ?
-
‘color’, ‘colour’과 같이 동일한 의미를 가지는 단어가 다른 스펠링으로 쓰이는 경우가 있다.
-
이런 경우
?
키워드를 통해서 ‘u’ 문자를 0 혹은 1개가 있을 수 있다는 것을 나타낼 수 있다.
탈자 부호 (Caret): ^
- 시작 문자를 지정할 수 있다. 특정 문자 혹은 특정 문자열을 시작으로 하는 문자열 패턴을 만들기 위해 사용한다.
'^a.*' 이면 'a'로 시작하는 모든 문자열을 뜻한다.
'a{2}.*2'이면 'aa'로 시작하는 모든 문자열이다.
달러 문자(Dollar): $
^
과는 정 반대로 마지막 문자 혹은 문자열을 지정한다. 특정 문자 혹은 문자열이 마지막에 지녀야하는 문자열 패턴을 만들 때 사용한다.
'.*b$' 이면 마지막 문자 혹은 문자열을 지정한다. 특정 문자 혹은 문자열이 마지막에 지녀야 하는 문자열 패턴을 만들 때 사용한다.
'.b$'이면, 'b'로 끝나는 모든 문자열
문자 클래스 (Charactert classes): []
- [cnf]이면 ‘c’, ’d’혹은 f가 될 수 있다,
- [^cdf] 이면 ‘c’, ’d’, f를 제외한 나머지 문자열
그룹 문자 (Grouping character): ()
- 특정 문자의 조합 패턴을 검색하는 경우에 사용된다.
- 중괄호를 이용하여, 그룹화를 하고, 이 그룹을 위에 언급한 키워드와 조합하여 사용이 가능하다.
`(ab)+` 이면 'ab', 'abab', 'ababab...'가 가능하다.
'^(th).*'이면 'th'로 시작하는 모든 문자와 매칭이 가능하다.
수직선 (Vertical Bar, OR Opertation): |
- 수직선은 비트 연산의 OR 연산과 비슷한 역할을 한다.
- 함께 사용된 패턴 중 하나를 선택 및 찾기를 가능하게 한다.
'th'(is|e|at) 이면 'this', 'the', 'that'이 매칭이 될 수 있다.
역슬레시 (Back-slash, Espace charater): \
-
예를 들어, 키워드 중 하나인
*
를 문자로 찾고 싶을 경우가 있을 것이다. -
앞서 소개한 모든 키워드 문자가 대상이 될 수 있는데, 해당 키워드를 문자 그대로 찾기 위한 방법으로 역슬래시를 사용한다.
'[0-9]\*[0-9]\+[0-9]' 이면, '1 * 2 + 3 = 7'과 같은 문자열이 있다면, '1 * 2 + 3'을 추출할 수 있다.
느낀점
- 평소에
VIM
을 쓴것이 정규 표현식을 외우는데 많은 도움이 되었다.
참고 문헌
>> Home