findall()
메서드패턴을 모두 찾아 리스트로 반환한다
search문
이나 match문
은 제대로 찾았는지 확인하는 절차가 따로 필요하지만
findall() 메서드
로 찾으면 결과값이 빈 리스트로 []
로 나온다
findall()
메서드 활용예제 1주민등록번호 앞 여섯 자리만 추출하는 패턴 적용
\d{6}
패턴 : 숫자를 여섯 번 반복한 값을 의미한다
>>> number = 'My number is 511223-1****** and yours is 521012-2******'
>>> re.findall('\d{6}', number)
['511223', '521012'] # 결과값 정상적으로 출력됨
정규표현식에서 문자열을 사용할 때는 앞에 r을 붙이는 것이 좋다
만약 문자열에 \
문자가 있다면 파이썬은 그 다음에 나오는 문자를 그대로 인식하지 않고 컴퓨터에 명령하기 위한 명령어로 인식한다
이스케이프문자 : 위와 같이 컴퓨터에서 명령을 내리기 위해 \
와 함께 사용하는 문자
문자
\
사용방법이스케이프 문자를 사용하고 싶지 않고
\
자체로 사용하고 싶은 경우
\\
로 입력- 문자열 앞에 r을 입력 : r을 입력하면 그 뒤에 나오는 문자열에 들어 있는 문자를 모두 일반 문자
raw string
로 인식한다
findall()
메서드 활용예제 2'ly'로 끝나는 단어만 추출하는 연습
>>> sentence = 'I love a lovely dog, really. I am not telling a lie.'
이 문장에서 'ly'로 끝나는 문자만 리스트로 반환하고 싶다
문자나 숫자를 반복하고 마지막에 'ly'로 끝나는 패턴을 찾으라 명령
공백이 아닌 문자나 숫자 : \w
숫자와 상관없이 반복하는 문자 : +
그리고 마지막으로 'ly'으로 끝나야 하니 ly
를 입력하면 된다
'\w+ly'
패턴을 찾으면 된다
# r'\w+ly'는 문자나 숫자(\w)가 몇 번이라도 나와도 좋으니
# 반복하고 (+), ly로 끝나는 패턴을 의미한다
>>> re.findall(r'\w+ly', sentence)
# lovely, reallyr가 리스트로 반환되었다 (리턴)
['lovely', 'really']