re
re는 Regular expression operation을 약자이다. 정규표현식을 이용한 문자열 매칭에 사용되는 Python 라이브러리이며, 파이썬 정규 효현식을 이용하여 문자열에서 [특정 패턴]의 문자열을 매칭하는 기능을 제공한다. 정규표현 식은 '.', '*', '$' 등의 특수문자를 이용한다.
특수문자
특수문자는 정규표현식을 표현하기 위한 의미를 가지는 문자를 말하며 아래의 표와 같다.
패턴설명예제
패턴 | 설명 | 예제 |
^ | 이 패턴으로 시작해야 함 | ^abc : abc로 시작해야 함 (abcd, abc12 등) |
$ | 이 패턴으로 종료되어야 함 | xyz$ : xyz로 종료되어야 함 (123xyz, strxyz 등) |
[문자들] | 문자들 중에 하나이어야 함. 가능한 문자들의 집합을 정의함. | [Pp]ython : "Python" 혹은 "python" |
[^문자들] | [문자들]의 반대로 피해야할 문자들의 집합을 정의함. | [^aeiou] : 소문자 모음이 아닌 문자들 |
| | 두 패턴 중 하나이어야 함 (OR 기능) | a | b : a 또는 b 이어야 함 |
? | 앞 패턴이 없거나 하나이어야 함 (Optional 패턴을 정의할 때 사용) | \d? : 숫자가 하나 있거나 없어야 함 |
+ | 앞 패턴이 하나 이상이어야 함 | \d+ : 숫자가 하나 이상이어야 함 |
* | 앞 패턴이 0개 이상이어야 함 | \d* : 숫자가 없거나 하나 이상이어야 함 |
패턴{n} | 앞 패턴이 n번 반복해서 나타나는 경우 | \d{3} : 숫자가 3개 있어야 함 |
패턴{n, m} | 앞 패턴이 최소 n번, 최대 m 번 반복해서 나타나는 경우 (n 또는 m 은 생략 가능) | \d{3,5} : 숫자가 3개, 4개 혹은 5개 있어야 함 |
이스케이프 기호
기호 | 설명 | 의미 |
\d | 숫자 | \d\d\d : 0 ~ 9 범위의 숫자가 3개를 의미 (123, 000 등) |
\D | 숫자가 아닌 문자 | |
\s | white space (탭, 줄바꿈, 공백 등 ) 문자와 매치 | \s\s : 화이트 스페이스 문자 2개 의미 (\r\n, \t\t 등) |
\S | white space가 아닌것 | |
\w | 문자 or 숫자 | \w\w\w : 문자가 3개를 의미 (xyz, ABC 등) |
\W | 문자 or 숫자가 아닌 문자 | |
. | 뉴라인(\n) 을 제외한 모든 문자를 의미 | .{3}: 문자 3개 |
Function
1. re.compile()
정규식 페턴을 파이썬이 사용할 수 있는 정규식 객체로 컴파일 해주는 기능을 한다. re.compile()을 통해 객체로 변환된 정규식은 match()와 search()를 통해 검색할 때 패턴으로 이용할 수 있다.
2. re.search()
re.compile()을 통해 객체로 변환된 패턴을 받아 문자열에서 패턴을 검색하는 기능을 한다. return 되는 값은 매칭 정보를 가지고 있는 re module의 match object이다. 문장 전체에서 패턴과 일치하는 부분을 찾아준다.
3. re.match()
re.search()와 비슷하나 문장의 처음부터 패턴과 일치하는 문자열만 검색하는 기능이다. return 값은 match object이다.
4. re.findall()
문자열에서 패턴과 일치하는 모드 문자열의 match object를 iteration할 수 있게 한다.
Example 1
이 예제는 특정 문자열을 검색하는 코드이다. 정규식에서 숫자를 의미하는 기호로 \d를 사용하였다. d 는 digit을 나타내고 0~9 숫자가 될 수 있다. re.compile() 함수는 전화번호 패턴에 갖는 정규식 객체를 return하게 된다. search()를 사용하여 첫번째 전화번호 패턴에 매칭되는 번호를 return 하게 된다. 그리고 이로부터 실제 전화번호를 얻기 위해서는 group() method를 사용하였다.
Example 2
example 1과 같이 전화번호를 검색하는 코드이다. 먼저 볼 것은 괄호와 d{#}이다.
d{#} 표기는 /d 를 이어서 #번 쓴것과 같은 의미를 가지고 있다.
정규식에서 괄호는 그룹을 의미한다. 위와 같이 코드를 짜게 된다면, 123은 group 1 으로 456-5555는 group 2 으로 가게 된다. areaCode 변수는 group(1)인 123 을 저장하게 되고, num 변수는 456-5555를 저장 하게 된다.
'Programming' 카테고리의 다른 글
[Argparse] 라이브러리 (0) | 2020.03.01 |
---|---|
Neural Network의 기초 - 2 with Pytorch (0) | 2020.02.21 |
Neural Network의 기초 with Pytorch (0) | 2020.02.21 |