영어에 대한 정규 표현식 (정규식)에 대해 배우고 있지만 일부 개념은 일본어와 같은 다른 언어에도 적용될 수 있지만 많은 사람들이 그렇지 않은 것처럼 느낍니다. 예를 들어 정규 표현식의 일반적인 용도는 단어에 영숫자가 아닌 문자가 있는지 확인하는 것입니다. 필자는이 기술뿐만 아니라 다른 사람이 일본어에 대해 어떻게 작동 하는지를 보지 못합니다. 그러나 한자도 매우 복잡하며 영숫자 문자보다 훨씬 넓은 범위에 걸쳐 있습니다. 많은 일본어 과정을 밟았지만 주제에 대한 지식이 거의 없으므로이 주제에 대한 정보는 물론 관심 분야에 대한 정보를 제공해 주시면 감사하겠습니다. 가능하다면 Python과 Java를 사용하는 답변이 내가 익숙한 언어 인 것처럼하고 싶습니다. 도와 줘서 고마워.정규 표현식 (정규식)
답변
파이썬 정규 표현식은 유니 코드 기능을 제한적으로 지원합니다. Java, 특히 Java 7이 더 좋습니다.
Java는 유니 코드 범주를 지원합니다. 예 : \p{L}
(및 그 약식은 \pL
)은 모든 언어의 모든 문자와 일치합니다. 여기에는 일본어 표의 문자가 포함됩니다.
Java 7은 일본어 텍스트가 일반적으로 구성되는 히라가나, 가타카나, 한글 및 라틴어 스크립트를 포함한 유니 코드 스크립트를 지원합니다. 이 스크립트 중 하나의 문자는 \p{Han}
, \p{Hiragana}
, \p{Katakana}
및 \p{Latin}
을 사용하여 일치시킬 수 있습니다. [\p{Han}\p{Hiragana}\p{Katakana}]
과 같은 문자 클래스에서 이들을 결합 할 수 있습니다. 대문자 P
(예 : \P{Han}
)을 사용하여 Han 스크립트의 문자를 제외한 모든 문자를 일치시킬 수 있습니다.
Java 7은 유니 코드 블록을 지원합니다. Android에서 코드를 실행하지 않는 한 (스크립트를 사용할 수없는 경우) 일반적으로 유니 코드 스크립트보다 유용하고 정확하지 않으므로 블록을 피해야합니다. 포함 일본어 텍스트에 관련된 블록의 다양한있다 \p{InHiragana}
, \p{InKatakana}
, \p{InCJK_Unified_Ideographs}
, \p{InCJK_Symbols_and_Punctuation}
등
자바와 파이썬 모두 FFFF
어떤 네 자리 headecimal 번호입니다 \uFFFF
를 사용하여 개별 코드 포인트를 참조 할 수 있습니다. Java 7은 Basic Multilingual Plane을 넘어선 Unicode 코드 포인트를 포함하여 모든 유니 코드 코드 포인트를 참조 할 수 있습니다. \x{10FFFF}
. 파이썬 정규 표현식은 21 비트 유니 코드를 지원하지 않지만 파이썬 문자열은 그렇습니다. 따라서 정규 표현식에 코드 포인트를 삽입 할 수 있습니다. \U0010FFFF
(대문자 U
과 그 뒤의 8 자리 16 진수).
자바 7 (?U)
또는 UNICODE_CHARACTER_CLASS
플래그가 \w
및 \d
같은 문자 클래스 shorthands 유니 코드를 인식하게, 그래서 그들은 등 일본어 표의 문자와 일치합니다 (그러나 \d
여전히 一二 같은 번호를 한자 일치하지 않습니다 三四) . 파이썬 3은 기본적으로 속기 클래스를 유니 코드로 인식합니다. Python 2에서 단축형 클래스는 re.UNICODE
또는 re.U
플래그를 사용할 때 유니 코드를 인식합니다.
모든 정규식 아이디어가 모든 스크립트에 똑같이 잘 적용되는 것은 아닙니다. 글자 상자와 같은 일부 내용은 일본어 텍스트와 관련이 없습니다.
두 번째 단락은 Java 7 문서에 따라 올바르지 않을 가능성이 매우 높습니다. ** 시험을 보셨습니까? ** 나머지는 지금 시험 할 수 없습니다. – nhahtdh
Python 버전 3 regex는 Java 7이 Pattern 클래스에서하는 것과 거의 같은 방식으로 유니 코드를 지원합니다. http://docs.python.org/py3k/library/re.html – nhahtdh
@nhahtdh, 귀하의 의견은 도움이되지 않습니다. 예, Java는 유니 코드 스크립트 (두 번째 단락에 설명되어 있음)를 지원하며 "Is"접두사를 사용하지 않아도됩니다 ("Is"를 사용하지 않는 것이 좋습니다). 그리고 파이썬 3은 자바 (유니 코드 스크립트, 카테고리, 블록 등)와 마찬가지로 정규 표현식에서 유니 코드 기능을 거의 지원하지 않습니다. – slevithan
파이썬
를 들어#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
kanji = u'漢字'
hiragana = u'ひらがな'
katakana = u'カタカナ'
str = kanji + hiragana + katakana
#Match Kanji
regex = u'[\u4E00-\u9FFF]+' # == u'[一-龠々]+'
match = re.search(regex, str, re.U)
print match.group().encode('utf-8') #=> 漢字
#Match Hiragana
regex = u'[\u3040-\u309Fー]+' # == u'[ぁ-んー]+'
match = re.search(regex, str, re.U)
print match.group().encode('utf-8') #=> ひらがな
#Match Katakana
regex = u'[\u30A0-\u30FF]+' # == u'[ァ-ヾ]+'
match = re.search(regex, str, re.U)
print match.group().encode('utf-8') #=>カタカナ
- 1. 정규식 내 정규 표현식
- 2. 정규 표현식 (정규식)
- 3. 정규 표현식
- 4. 정규 표현식
- 5. 정규 표현식
- 6. 정규 표현식
- 7. 정규 표현식
- 8. 정규 표현식
- 9. 정규식 : 나는 정규 표현식 완전히 희망입니다 X
- 10. 정규 표현식 대기열 통계를 추출하는 정규식
- 11. 자바 스크립트 정규식 내가이 정규 표현식 쓴
- 12. 정규 표현식
- 13. 정규 표현식
- 14. 정규 표현식
- 15. 정규 표현식 xss
- 16. 확장명을 선택하는 정규 표현식
- 17. 는 정규 표현식
- 18. 정규 표현식 mysql을
- 19. C# 및 정규 표현식
- 20. 정규 표현식 - 볼 - 뒤에
- 21. .csv 파일 정규 표현식
- 22. 라텍스에 정규 표현식 작성하기
- 23. XSLT 정규 표현식 이스케이프
- 24. 정규 표현식 바꾸기 선택
- 25. 정규 표현식 욕심쟁이 문제
- 26. 루비 인용 정규 표현식
- 27. PHP 나쁜 정규 표현식
- 28. 자바 정규 표현식
- 29. 이맥스 정규 표현식 빌더 교체 - 정규 표현식
- 30. 정규 표현식 경계
대부분의 정규식 구현은 유니 코드를 지원합니다. 어떤 종류의 정규 표현식은 별도의 질문입니다. – SLaks
@Something Jones : 유니 코드의 16 진수 값을 사용하여 일본어 문자를 적용 할 수 있습니다. 이자형.g : \ uXXXX 여기서 XXXX는 유니 코드 문자의 값입니다. – jaselg
도움이 될만한 것 : http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml. 중국어 문자와 같은 문자의 일본어 문자는 분리되지 않습니다. – nhahtdh