당신은 멋쟁이, 우리는 장고쟁이~

0%

Python 기초 13편 - Regular Expression (정규표현식 2)

Regular Expression


정규표현식은, 긴 텍스트에서 검색할 문자열 혹은 패턴을 나타내는 기호 및 문자입니다.


정규표현식에 지정된 문자열들이 검색할 문자열에서 매치가 되는지 확인이 가능합니다.

이전 포스팅에서, re 모듈은 findall, search, split, sub 같은 함수들을 가지고 있다는것을 알았고, 몇가지 특정 의미를 가진 문자들 metacharacter 에 대해서 알아보았습니다.


*지난 포스팅에 이어서, special sequences 특정 순서에 대해서 알아봅니다. *


Special sequence 는 \ 뒤에 문자 하나를 붙여서 지정합니다.

아래 테이블로 정리 해봅니다.


문자 비고 예시
\A 지정된 문자가, 문자열의 앞에 오면 매치를 반환 합니다. “\AThe”
\b 지정된 문자가, 문자열의 단어의 앞부분 혹은 뒷부분에 있으면, 매치를 반환합니다 r”\bain”r”ain\b”
\B 지정된 문자가 문자열안에 있지만, 단어의 앞부분 혹은 뒷부분에 없을 경우에 매치를 반환합니다. r”\Bain”r”\ain\B”
\d 문자열이 숫자를 포함하면 (0-9) 를 가지고 있으면, 매치를 반환합니다 “\d”
\D 문자열이 숫자를 포함하지 않으면, 매치를 반환 “\D”
\s 문자열이 빈공간을 가지고 있으면, 매치를 반환 “\s”
\S 문자열이 빈공간을 가지고 있지 않으면, 매치를 반환 “\S”
\w 문자열이 아무 문자 (a - Z, 0-9, _)나 가지고 있을경우, 매치를 반환 “\w”
\W 문자열이, 아무 문자(a-Z, 0-9, _)를 가지고 있지 않을 경우, 매치를 반환 “\W”
\Z 문자열의 끝에 지정된 문자가 있으면 매치를 리턴 “Spain\Z”




예시


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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# \A 지정된 문자가 문자열의 앞에 오면, 매치를 반환합니다. 

import re
txt = "The rain in Spain"

# 문자열이 "The" 라는 문자열로 시작하는지 확인

x = re.findall("\AThe", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \b 지정된 문자가, 단어의 시작에 있는지 확인 합니다

import re
txt = "The rain in Spain"

x = re.findall(r"\bain", txt)

print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \b 지정된 문자가, 단어의 끝에 있는지 확인 합니다.

import re
txt ="The rain in Spain"

x = re.findall(r"ain\b", txt)

print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \B 지정된 문자 "ain" 이 존재하지만, 단어의 앞에 오지 않는경우를 체크

import re
txt = "The rain in Spain"

x = re.findall(r"\Bain", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \B 지정된 문자 "ain"이 존재하지만, 단어의 끝에 오지 않는것을 확인합니다.

import re
txt = "The rain in Spain"

x = re.findall(r"ain\B", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \d 문자열이 숫자를 가지고 있는지 확인 합니다 (0-9)

import re
txt = "The rain in Spain"

x = re.findall("\d", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \D 숫자가 아닌 모든 문자의 매치들을 리턴합니다

import re
txt = "The rain in Spain"

x = re.findall("\D", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \s 각 빈공간들의 매치들을 리턴합니다

import re
txt = "The rain in Spain"

x = re.findall("\s", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \S 빈공간이 아닌 모든 문자들에 대한 모든 매치를 리턴합니다

import re
txt = "The rain in Spain"

x = re.findall("\S", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \w 모든 문자 (a - Z, 0-9, _) 가 존재하는 지 확인하고, 모든 매치들을 반환합니다

import re
txt = "The rain in Spain"

x = re.findall("\w", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \W 모든 문자 (a - Z, 0-9, _) 가 아닌것이 존재하는 지 확인하고, 모든 매치들을 반환합니다
# 아래 예시는 빈공간이 (a-Z, 0-9 혹은 _) 가 아닌것입니다.

import re
txt = "The rain in Spain"

x = re.findall("\W", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")

# \Z 문자열이 "Spain" 으로 끝나는지 확인 합니다

import re
txt = "The rain in Spain"

x = re.findall("Spain\Z", txt)
print(x)

if x:
print("매치가 있습니다")
else:
print("매치가 없습니다")