본문 바로가기

Daylogs/Java

정규식으로 한글 영어 구분하기

발생일: 2009.06.12

문제:
키워드를 입력하면 한글/영문 여부를 구분해서 각각 다른 액션을 수행하려고 한다.
한글과 영문이 섞여있을 경우엔 한글로 파악하며, 샘플 데이터는 아래와 같다.
'abc' : 영문
'abc 울랄라' : 한글
'   abc  _  def -- abc' : 영문
'울라라' : 한글
'울랄라A' : 한글

키워드에 특수문자가 포함될 수 있지만 구분 없이 단지 한글과 영문 여부를 판단하려고 한다.

하여~
좀 간단히 깔끔하게 해결하고자,
apache의 StringUtils의 isAlphanumericSpace() 메서드를 사용해보려고 했으나~
여기서의 알파벳은 한글도 포함하는 모양이다.
아마 내부적으론 \w 와 \s 를 정규식으로 체크하는 모양이다.

for 문으로 캐릭터 체킹을 하는 예제도 많지만
뭔가 깔끔하게 해결하는 방법이 있을까?

해결책:
생각해보니 간단했다. 여기선 단순히 한글이 있는지 여부만 검사하면 되었다.
아래 정규식 조건을 적용했다.

.*[ㄱ-ㅎㅏ-ㅣ가-힣]+.*

한글 또는 자/모음이 있을 경우, 한글이라고 파악하는 조건이다.

아래는 참고하기 좋은 정규식 사이트이다.
http://kio.zc.bz/Lecture/regexp.html
http://www.sitepoint.com/article/java-regex-api-explained/