문자열에서 한글만 가져오거나, 한글이 아닌 다른 문자들만 가져오는 방법에 대해서 알아보겠습니다.

한글, 영어, 숫자 등의 문자가 섞여있고 한글만 필요할 때 또는 한글만 제거해야하는 경우, 정규표현식으로 한글을 찾아서 예외 처리할 수 있습니다.

1. 한글만 추출

re.sub(pattern, repl, str)는 str에서 패턴에 해당하는 문자열을 찾고 repl로 변환합니다.

아래 예제와 같이 문자열에서 한글이 아닌 문자들을 찾고, 빈 문자열로 변환하여 제거할 수 있습니다. 한글이 아닌 문자를 제거하면 문자열은 한글만 남게 됩니다.

  • [^ㄱ-ㅎ가-힣]+ : 한글이 아닌 문자들을 의미하는 패턴
  • ^ : NOT의 의미로, 한글 패턴과 함께 사용되어 한글이 아닌 문자들을 의미하게 만들 수 있음
  • re.sub(r'[^ㄱ-ㅎ가-힣]+', '', text) : 한글을 제외한 문자들을 찾아서 빈 문자열로 변환
import re

text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[^ㄱ-ㅎ가-힣]+', '', text)
print(result)

Output:

안녕하세요ㅋㅋㅋ한자숫자

2. 한글만 제거

위에서 사용한 정규표현식에서 ^을 제거하면, 문자열에서 한글만 제거할 수 있습니다.

아래 예제와 같이 sub()로 한글만 찾고 빈 문자열로 찾아서 제거할 수 있습니다.

  • [ㄱ-ㅎ가-힣]+ : 한글 문자들을 의미하는 패턴
import re

text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[ㄱ-ㅎ가-힣]+', '', text)
print(result)

Output:

Python example  : 你好, : 123

3. 한글, 공백 모두 제거

공백도 함께 제거하려면 공백(white space)을 의미하는 패턴(\s)을 추가하면 됩니다.

아래 예제와 같이 sub()로 한글과 공백 찾고 빈 문자열로 찾아서 제거할 수 있습니다.

  • [ㄱ-ㅎ가-힣\s]+ : 한글과 공백 문자들을 의미하는 패턴
import re

text = "Python example 안녕하세요ㅋㅋㅋ 한자: 你好, 숫자: 123"
result = re.sub(r'[ㄱ-ㅎ가-힣\s]+', '', text)
print(result)

Output:

Pythonexample:你好,:123