정규식을 사용해서 한글만 추출하려면?
2014.04.21 21:37
질문하시기 전에 게시판 검색을 먼저 해주세요.
타블릿PC, 스마트폰에 관한 질문 또는 요청은 <포터블기기 질문답변> 게시판을 이용해주세요.
=============================================================================================
** 이 게시판은 댓글이 달리면 게시물을 삭제할 수 없습니다. **
** 내용의 장기노출이 곤란한 경우 [수정]을 통해 내용을 변경하시기 바랍니다. **
안녕하세요.
아래와 같은 긴 텍스트가 있는데 여기서 한글만 추출하고 나머지를 다 지우고 싶습니다.
정규식 [ㄱ-ㅎ] 이런식으로 추출을 하니 한자한자만 추출이 되서
알아볼 수가 없더군요.
ttp://abc.com//안녕하세요
ttp://kcliff.com//여보세요
ttp://kadflkdfkff.com//홍길동/dldfkdiekd
ttp://aldkkekd.com//dldfkdiekd/한소리
[결과물]
안녕하세요
여보세요
홍길동
한소리
위와 같은 결과물을 추출하는 방법은 없을까요?
코멘트 10
-
김강욱
04.21 22:41
-
왕초보
04.22 06:45
엥 일단.. 정규식이란 것을 수행하는 어플이 8비트를 이해해야 합니다. 일반 유닉스/리눅스 툴들은 모두 7비트 클린 툴들이라 정규식 써버리면 한글 다 깨진단.. ㄷㄷㄷ
정규식을 이용하는 것보다 C프로그램을 만들어서 돌리는 것 강추.
-
김강욱
04.22 19:36
? 그...그런가요.
일단, Java 나 mysql 은 되는 듯 합니다만, 리눅스 툴은 생각안해봤...응? 근데 리눅스 툴 이름이 뭔가요? ^^
-
왕초보
04.23 00:21
sed =3=3=3
-
김강욱
04.23 01:13
아~ SE.. 말씀이시군요.
-
dow
04.22 20:16
내용이 모두 위에 적은신 것과 같다면
gvim에서 file을 연후
:%s/[a-zA-Z]//g
:%s/\.//g
:%s/\///g
:%s/://g
:w!
-
Freedom^^
04.24 11:28
gvim을 사용해봐야겠군요. 감사합니다. ^^
-
그냥 정규식만으로는 힘들거 같고, 왕초보님 말씀처럼 C나 Java로 프로그램을 돌리는 것이 훨씬 더 정확할 것으로 보입니다. 그런데 이 방식으로 해도, 어떤 방식으로 encoding된 문자열이냐에 따라 검출하는 로직이 완전히 달라질 겁니다.
왕초보님이 말씀하신 것처럼 7bit 혹은 8bit ansi로 되어 있다면 일단 거의 불가능하구요. (한글 단어를 전부 Dictionary로 가지고 있고 그걸 다 비교해봐야 70-80% 정도의 정확도를 가질 수 있을 겁니다.) unicode라면 unicode 코드에서 한글코드 영역안에 있는지 없는지 확인해보면 가능합니다. 물론 한글코드 영역에 대한 데이터를 별도로 가지고 있어야 하구요.
혹시 문제가, 유니코드임과 동시에 URL에 가능한 문자코드냐 아니냐..로 구분해야 하는건가요? 한글인지 태국어인지 구분할 필요가 없을 경우에 말이죠. 그럴 경우 각 문자열 안에 정보가 담겨 있기 때문에, 한글자씩 읽어들여 그 정보를 보면 됩니다.
혹시 어떤 인코딩인지 정보가 없다면, 그냥 전부 다 읽어들여서 "일반적으로 이런건 utf-8인 경우가 많지."라는 식으로 때려맞춰야 합니다.
-
Freedom^^
04.24 11:27
텍스트파일이기 때문에 UTF나 ANSI나 모두 가능합니다.
생각해보니 정규식으로 영어와 특수문자를 모두 지우라고 명령을 주면 한글만 남지 않을까요?
-
솔모리
05.09 20:14
저 위에 dow님 댓글이 바로 그거예요.
정규식 너무 어려워요...털썩...TT
1) 그냥 영어나 특수문자, 숫자, 화이트 스페이스를 없애버리시면...근데...언어가 다르면 털썩~
2) [ㄱ-힣]\w+
3) [ㄱ-힣]