본문 바로가기
환급 챌린지!

[패스트캠퍼스 수강 후기] 머신러닝 인강 100% 환급 챌린지 12회차 미션

by 빅데이터1020 2020. 10. 30.
SMALL

안녕하세요.

패스트 캠퍼스 수강후기 - 머신러닝과 데이터 분석 A-Z 12회차 미션 시작합니다!

머신러닝 인강 후기 12회차는 정규표현식과 정규표현식 연습문제 풀이에 대해 공부합니다.

 

패스트 캠퍼스 강의에서 제공하는 실습파일을 보면서 강사님의 지시에 따라 실습을 따라하시면 됩니다.

 

" 정규표현식 "

1) ^, $

^ : 문자열의 맨 앞부터 일치하는 경우를 검색합니다.

$ : 문자열의 맨 뒤부터 일치하는 경우를 검색합니다.

 

b에서 a까지 알파벳 대소문자, 숫자의 반복패턴이 0번 이상 발생한 것을 greedy하게 검색하기 때문에

bana가 출력됩니다.

re.search(r'b\w+a', 'cabana') #<re.Match object; span=(2, 6), match='bana'>

 

문자열의 맨 앞부터 b에서 a까지 대소문자, 숫자의 반복패턴이 0번 이상 발생한 것을 greedy하게 검색하기 때문에 none이 출력됩니다.

re.search(r'^b\w+a', 'cabana')

 

문자열의 맨 앞부터 b에서 a까지 대소문자, 숫자의 반복패턴이 0번 이상 발생한 것을 greedy하게 검색하기 때문에 babana가 출력됩니다.

re.search(r'^b\w+a', 'babana') #<re.Match object; span=(0, 6), match='babana'>

 

문자열의 맨 뒤 a부터 앞에 b까지 대소문자, 숫자의 반복패턴이 0번 이상 발생한 것을 greedy하게 검색하기 때문에 bana가 출려됩니다.

re.search(r'b\w+a$', 'cabana') #<re.Match object; span=(2, 6), match='bana'>

 

문자열의 맨 뒤 a부터 앞에 b까지 대소문자, 숫자의 반복패턴이 0번 이상 발생한 것을 greedy하게 검색하기 때문에 none이 출력됩니다.

re.search(r'b\w+a$', 'cabanap')

 

2) grouping

()을 사용하여 grouping합니다.

매칭 결과를 각 그룹별로 분리할 수 있습니다.

패턴을 명시할 때, 각 그룹을 괄호()안에 넣어 분리하여 사용할 수 있습니다.

m = re.search(r'(\w+)@(.+)', 'test@gmail.com')

print (m.group(1)) #test --> 첫번째 그룹인 ID 부분
print (m.group(2)) #gmail.com --> 두번째 그룹인 이메일 도메인 부분
print (m.group(0)) #test@gmail.com -->그냥 기본값이 나옴. print(m.group())과 같은 결과

 

3) {}

*, +, ? 을 사용하여 반복적인 패턴을 찾는 것이 가능하나, 반복의 횟수 제한은 불가합니다.

패턴 뒤에 위치하는 중괄호 {}에 숫자를 명시하면 해당 숫자 만큼의 반복인 경우에만 매칭합니다.

{4} 4번 반복, {3, 4}3~4번 반복하겠다는 의미입니다.

 

p다음 i3~5번 반복되는 매칭을 찾기 때문에 piiiiig가 출력됩니다.

re.search('pi{3,5}', 'piiiiig') #<re.Match object; span=(0, 7), match='piiiiig'>

 

4) 미니멈 매칭(non-greedy way)

기본적으로 *, +, ? 를 사용하면 greedy (맥시멈 매칭) 하게 동작합니다.

*?, +?을 이용해서 non-greedy (미니멈 매칭) 기능을 구현합니다.

 

< 모든문자의 반복패턴이 0 이상 > 을 찾는 것이기 때문에 <html>haha</html>가 출력됩니다.

re.search(r'<.+>', '<html>haha</html>') #<re.Match object; span=(0, 17), match='<html>haha</html>'>

 

< 모든문자의 반복패턴이 0 이상 > 을 찾지만 non-greedy하게 매칭되기 때문에 <html>가 출력됩니다.

re.search(r'<.+?>', '<html>haha</html>') #<re.Match object; span=(0, 6), match='<html>'>

 

5) {}?

{m, n}의 경우 m번에서 n번 반복하나 greedy하게 동작합니다.

{m, n}? 으로 사용하면 non-greedy하게 동작하여 최소 m번만 매칭하면 만족하게 됩니다.

 

greedy하게 동작하기 때문에 3~5번 반복한 'aaaaa'를 출력합니다.

re.search(r'a{3,5}, 'aaaaa') #<re.Match object; span=(0, 5), match='aaaaa'>

 

non-greedy 하게 동작하기 때문에 3번 반복한 'aaa'를 출력합니다.

re.search(r'a{3,5}?', 'aaaaa') #<re.Match object; span=(0, 3), match='aaa'>

 

 

 

머신러닝 인강 최강자를 만나고 싶으면!? https://bit.ly/3lZfGmn

LIST