How We Coding

### Day_01_05_re.py


동영상 강의 : http://pythonkim.tistory.com/notice/77



- import re 를 해주어야 한다.


- Google 에서 "3412 bob 123" 검색 

>> http://www.linuxfocus.org/Korean/July1998/article53.html 에서 db 데이터 가져올 수 있음.


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
import re
 
db = '''3412    Bob 123
3834  Jonny 333
1248   Kate 634
1423   Tony 567
2567  Peter 435
3567  Alice 535
1548  Kerry 534'''
 
print(db)
 
# 3412    Bob 123
# 3834  Jonny 333
# 1248   Kate 634
# 1423   Tony 567
# 2567  Peter 435
# 3567  Alice 535
# 1548  Kerry 534
 
 
ns = re.findall(r'[0-9]', db) # 숫자
print(ns)
 
# ['3', '4', '1', '2', '1', '2', '3', '3', '8', '3', '4', '3', '3', '3', '1', '2', '4', '8', '6', '3', '4', '1', '4', '2', '3', '5', '6', '7', '2', '5', '6', '7', '4', '3', '5', '3', '5', '6', '7', '5', '3', '5', '1', '5', '4', '8', '5', '3', '4']
 
 
ns = re.findall(r'[0-9]+', db) # 숫자 한개 이상
print(ns)
 
# ['3412', '123', '3834', '333', '1248', '634', '1423', '567', '2567', '435', '3567', '535', '1548', '534']
cs



# 문제

# 이름만 찾아보기


1
2
3
4
5
6
7
# 문제
# 이름만 찾아보기
# names = re.findall(r'[a-zA-Z]+', db)
names = re.findall(r'[A-Z][a-z]+', db)  # 처음 대문자 한글자 + 소문자 한개 이상.
print(names)
 
# ['Bob', 'Jonny', 'Kate', 'Tony', 'Peter', 'Alice', 'Kerry']
cs


>> [A-Za-z]+ 와 [A-Z][a-z]+ 는 다르다..!!



# 문제

# T로 시작하는 이름

# T로 시작하지 않는 이름


1
2
3
4
5
6
7
8
9
10
11
12
# 문제
# T로 시작하는 이름
# T로 시작하지 않는 이름
 
Tname = re.findall(r'T[a-z]+', db)
print(Tname)    # ['Tony']
 
nTname = re.findall(r'[^T][a-z]+', db)  # bug
print(nTname)   # ['Bob', 'Jonny', 'Kate', 'ony', 'Peter', 'Alice', 'Kerry']
 
nTname = re.findall(r'[A-SU-Z][a-z]+', db)
print(nTname)   # ['Bob', 'Jonny', 'Kate', 'Peter', 'Alice', 'Kerry']
cs


>> T로 시작하지 않는 단어 중 [^T][a-z] 로 했을 때 문제가 있었다.

>> 바로 'ony' 라는 단어까지 검색이 되어버렸다.



# raw string


r'string' : raw


- 파이썬에서 사용하는 문자열로 일반 문자열과 충돌을 막기 위해 제공하는 것 같다 .

- 정규표현식 외에 쓸일은 없다고 한다.



'Language > Python' 카테고리의 다른 글

<2-2> 리스트, 튜플  (0) 2018.02.15
<2-1> 제어문과 반복문의 연결고리  (0) 2018.02.06
<1-6> 정규표현식 (Regular Expression)  (0) 2018.02.02
<1-5> 함수(function)  (0) 2018.02.01
<1-4> 제어문(if)  (0) 2018.01.31