플그래밍/파이써언

[파이썬] 정규표현식, 이것만은 알고 가자 (regex)

훗티v 2023. 6. 25. 04:08
728x90
반응형

텍스트 마이닝과 정규표현식은 서로 뗄레야 뗄 수 없는 사이입니다. 복잡한 정규표현식이지만 알아두면 좋은 몇 가지 기능만 살펴보겠습니다.

 

[ ]

import re

text = "The vibrant colors of the autumn leaves created a mesmerizing view in the serene forest."

print(re.findall("[a]", text))

 

text라는 문자열에서 알파벳 a를 추출해 옵니다. 총 5개가 추출된 것을 확인 할 수 있습니다. 예를 들어 [a] 대신 [ab]를 입력할 경우 알파벳 a와 b를 순서대로 추출해줍니다. 

 

 

 

주로 쓰이는 표현법은 다음과 같습니다.

 

숫자: [0123456789] 또는 [0-9]

알파벳(소문자) : [a-z]

알파벳(대문자) : [A-Z]

알파벳(소문자 + 대문자): [a-zA-Z]

숫자, 알파벳 소문자, 알파벳 대문자, "_" : [\w]

 

* [\w]에 특수문자와 공백은 포함되지 않습니다.

 

+

+는 1번 이상 찾고자 하는 문자가 1번 이상 반복된 경우를 묶어서 추출해줍니다. 

숫자, 알파벳 소문자, 알파벳 대문자, _가 1번 이상 사용된 모든 단위 추출 시,

 

import re

text = "The sun rose beautifully today. I enjoyed my coffee outside. Birds sang their cheerful tunes. The air smelled of blooming flowers. It was a perfect morning."

result = re.findall("[\w]+", text)

for each in result:
    print(each)

 

 

단어 토큰화와 비슷한 결과를 반환합니다. (* 구두점도 빠져있네요.)

 

{ }

정확한 반복 개수를 설정할 수 도 있습니다.

1{2,4} : 1이라는 문자가 2, 3, 4번 반복된 경우를 찾아달라는 명령어입니다.

여기서 주의해야할 점은, regex는 가장 긴 매칭결과를 우선적으로 반환하며 한번 매칭이 된 경우에는 겹치는 부분이 없어야만 추가로 결과를 반환합니다.

1111의 경우 4번 반복되었기 때문에 1111를 반환하게되고 겹치지 않도록 2 또는 3번 반복한 경우가 없기 때문에 1111만 반복하게 됩니다. (* 첫 11의 경우 2번 반복에 해당하기 때문에 11를 그대로 반환합니다.)

 

import re

text = "11 1111"

result = re.findall("1{2,4}", text)

print(result)

 

 

 

 

 

 

쿠팡 광고 클릭 시, 이에 따른 일정액의 수수료를 제공받으며 블로그 운영에 큰 도움이 됩니다. 감사합니다.

반응형