정규표현식의 정의
정규표현식의 활용
정규표현식 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.
문자열을 처리하는 모든 곳에서 사용할 수 있는 것으로
정규표현식은 컴퓨터 과학의 정규 언어로부터 유래하였으나 구현체에 따라서 정규 언어보다 더 넓은 언어를 표현할 수 있는 경우도 있으며 정규표현식 자체의 문법도 여러 가지 존재하고 있다.
정규표현식은 텍스트가 준수해야하는 패턴을 표현하기 위해 특정한 표준 텍스트 신텍스를 의미하기 위해 사용된다.
정규표현식의 각 문자(패턴을 기술하는 문자열 안의 각 문자)는 메타문자로 이해되거나 정규 문자로 이해된다.
- 정규표현식과 다양한 메소드는 데이터를 분석하기 전 데이터를 구분하기 위해 많이 활용된다.
- 실무에서는 맡은 업무와 개선해야할 서비스에 따라 사용하게되는 정규표현식 메소드는 달라질 수 있다.
- 정규표현식 등과 같은 기술은 프로그래밍 언어나 특정 기술에 종속되지 않고 쓰이기 때문에 익숙해져야하는 요소 중 하나이다.
메타문자란 원래 그 문자가 가진 뜻이 아닌, 특별한 용도로 사용하는 문자를 말한다.
메타 문자의 예시들 : . ^ $ * + ? { } [ ] \ | ( )
정규표현식에서 위의 메타문자를 사용하면 특별한 의미를 갖게 된다.
문자클래스(character class)는 [ ]이다.
문자 클래스 안에는 어떠한 문자라도 들어갈 수 있으며 이는 [ ]사이의 문자들과 Match
하라는 의미이다.
즉, [abc]가 정규표현식이라면 이 표현식은 a,b,c 중 한 개의 문자와 일치하는 것을 의미한다.
'a'는 정규식에 'a'가 있으므로 일치하고 'after'는 정규식의 'a'와 일치하지만 'die'는 정규식과 일치하는 문자가 없으므로 일치하지 않는다.
[ ] 안의 두 문자 사이에 하이픈(-)을 사용하면 두 문자 사이의 범위(From~To)를 의미한다.
[abc]와 [a-c]는 같은 의미이며 [0-4]와 [01234] 역시 같은 의미를 나타낸다.
[a-zA-Z]는 알파벳 소문자와 대문자 모두를 의미하며 [0-9]는 모든 숫자를, [가-힣]은 한국어 글자(자음 모음만 있는 경우를 제외)를 의미한다.
문자클래스를 사용할 때에는 주의해야하는 메타문자가 있다.
바로 ^
이다.
문자 클래스 안에 메타 문자 ^
를 사용하면 뒤의 문자를 제외한다는 것을 의미한다.
match() : 문자열의 처음부터 정규식과 매치되는지 조사한다.
search() : 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.
findall() : 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
finditer() : 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.
match와 search는 정규식과 매치될 때 match객체(정규식의 검색결과로 돌려주는 객체)를 돌려주고, 매치되지 않을 때에는 None을 돌려준다.
#정규표현식 라이브러리
import re
wordlist = ['color','colour','work','working','fox','worker','working']
for word in wordlist:
if re.search('col.r', word):
print(word)
#color
print("2".rjust(3,"0"))
#2를 0을 사용해서 세자리수로 나타내라.
#"002"
print("50000".rjust(5,"0"))
#50000을 0을 사용해서 다섯자리수로 나타내라.
#"50000"
print("123".rjust(5,"0"))
#123을 0을 사용해서 다섯자리수로 나타내라.
#"00123"
print("123".rjust(5,"a"))
#123을 a를 사용해서 다섯자리수로 나타내라.
#"aa123"
zfill(width)
split
얕은 복사(copy())
깊은 복사(deep copy)