-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathregular_expression.py
More file actions
60 lines (48 loc) · 3.78 KB
/
regular_expression.py
File metadata and controls
60 lines (48 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 정규표현식 사용하기
# 문자열 판단하기
import re
re.match('Hello', 'Hello, world!') # 문자열이 있으므로 정규표현식 매치 객체가 반환됨
re.match('Python', 'Hello, world!') # 문자열이 없으므로 아무것도 반환되지 않음
# 문자열이 맨 앞에 오는지 맨 뒤에 오는지 판단하기
re.search('^Hello', 'Hello, world!') # Hello로 시작하므로 패턴에 매칭됨
re.search('world!$', 'Hello, world!') # world!로 끝나므로 패턴에 매칭됨
# 지정된 문자열이 하나라도 포함되는지 판단하기
re.match('hello|world', 'hello') # hello 또는 world가 있으므로 패턴에 매칭됨
# 범위 판단하기
re.match('[0-9]*', '1234') # 1234는 0부터 9까지 숫자가 0개 이상 있으므로 패턴에 매칭됨
re.match('[0-9]+', '1234') # 1234는 0부터 9까지 숫자가 1개 이상 있으므로 패턴에 매칭됨
re.match('[0-9]+', 'abcd') # abcd는 0부터 9까지 숫자가 1개 이상 없으므로 패턴에 매칭되지 않음
# 문자가 한 개만 있는지 판단하기
re.match('abc?d', 'abd') # abd에서 c 위치에 c가 0개 있으므로 패턴에 매칭됨
re.match('ab[0-9]?c', 'ab3c') # [0-9] 위치에 숫자가 1개 있으므로 패턴에 매칭됨
re.match('ab.d', 'abxd') # .이 있는 위치에 문자가 1개 있으므로 패턴에 매칭됨
# 문자 개수 판단하기
re.match('h{3}', 'hhhello')
re.match('(hello){3}', 'hellohellohelloworld')
re.match('[0-9]{3}-[0-9]{4}-[0-9]{4}', '010-1000-1000') # 숫자 3개-4개-4개 패턴에 매칭됨
re.match('[0-9]{3}-[0-9]{4}-[0-9]{4}', '010-1000-100') # 숫자 3개-4개-4개 패턴에 매칭되지 않음
re.match('[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}', '02-100-1000') # 2~3개-3~4개-4개 패턴에 매칭됨
re.match('[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}', '02-10-1000') # 2~3개-3~4개-4개 패턴에 매칭되지 않음
# 숫자와 영문 문자를 조합해서 판단하기
re.match('[a-zA-Z0-9]+', 'Hello1234') # a부터 z, A부터 Z, 0부터 9까지 1개 이상 있으므로
re.match('[A-Z0-9]+', 'hello') # 대문자, 숫자는 없고 소문자만 있으므로 패턴에 매칭되지 않음
re.match('[가-힣]+', '홍길동') # 가부터 힣까지 1개 이상 있으므로 패턴에 매칭됨
# 특정 문자 범위에 포함되지 않는지 판단하기
re.match('[^A-Z]+', 'Hello') # 대문자를 제외. 대문자가 있으므로 패턴에 매칭되지 않음
re.match('[^A-Z]+', 'hello') # 대문자를 제외. 대문자가 없으므로 패턴에 매칭됨
re.search('^[A-Z]+', 'Hello') # 대문자로 시작하므로 패턴에 매칭됨
re.search('[0-9]+$', 'Hello1234') # 숫자로 끝나므로 패턴에 매칭됨
# 특수 문자 판단하기
re.search('\*+', '1 ** 2') # *이 들어있는지 판단
re.match('[$()a-zA-Z0-9]+', '$(document)') # $, (, )와 문자, 숫자가 들어있는지 판단
re.match('\d+', '1234') # 모든 숫자이므로 패턴에 매칭됨
re.match('\D+', 'Hello') # 숫자를 제외한 모든 문자이므로 패턴에 매칭됨
re.match('\w+', 'Hello_1234') # 영문 대소문자, 숫자, 밑줄 문자이므로 패턴에 매칭됨
re.match('\W+', '(:)') # 영문 대소문자, 숫자, 밑줄문자를 제외한 모든 문자이므로 패턴에 매칭됨
# 공백 처리하기
re.match('[a-zA-Z0-9 ]+', 'Hello 1234') # ' '로 공백 표현
re.match('[a-zA-Z0-9\s]+', 'Hello 1234') # \s로 공백 표현
# 참고 | 같은 정규식 패턴을 자주 사용할 때
p = re.compile('[0-9]+') # 정규표현식 패턴을 객체로 만듦
p.match('1234') # 정규표현식 패턴 객체에서 match 메서드 사용
p.search('hello') # 정규표현식 패턴 객체에서 search 메서드 사용