2012-01-24 14 views
6

que tiene un archivo con caracteres coreanos y chinos. Quiero encontrar los pares donde se utilizan declaraciones entre paréntesis para dar el hanja para una palabra coreana, como este: 한문 (漢文)Perl expresiones regulares hallazgo personaje del conjunto arbitrario

La búsqueda se vería algo como esto: /[korean characters] \([chinese characters]\)/

¿Cómo se especifica el chino o ¿Caracteres coreanos, o cualquier otro conjunto como cirílico o tailandés, por ejemplo?

Respuesta

9

Unicode proporciona propiedades que identifican a caracteres de script que pertenecen. Los personajes pueden ser emparejados en función de su propiedad de script utilizando \p{Script=...}.

no sé mucho acerca de los idiomas que usted ha mencionado, pero yo creo que usted quiere

  • \p{Script=Han} aka \p{Han} para el chino.
  • \p{Script=Hangul} aka \p{Hangul} para el coreano.
  • \p{Script=Cyrillic} aka \p{Cyrl} para cirílico.
  • \p{Script=Thai} aka \p{Thai} para tailandés.

Usted puede echar un vistazo a perluniprops para encontrar el que usted está buscando, o puede utilizar uniprops * para encontrar las propiedades que coinciden con un carácter específico.

$ uniprops D55C 
U+D55C ‹한› \N{HANGUL SYLLABLE HAN} 
    \w \pL \p{L_} \p{Lo} 
    All Any Alnum Alpha Alphabetic Assigned InHangulSyllables L Lo 
    Gr_Base Grapheme_Base Graph GrBase Hang Hangul Hangul_Syllables 
    ID_Continue IDC ID_Start IDS Letter L_ Other_Letter Print Word 
    XID_Continue XIDC XID_Start XIDS X_POSIX_Alnum X_POSIX_Alpha 
    X_POSIX_Graph X_POSIX_Print X_POSIX_Word 

Para saber en qué personajes están en una propiedad determinada, puede utilizar unichars *. (Esto es de utilidad limitada ya que la mayoría de los caracteres CJK no se nombran.)

$ unichars -au '\p{Han}' 
⺀ U+2E80 CJK RADICAL REPEAT 
⺁ U+2E81 CJK RADICAL CLIFF 
⺂ U+2E82 CJK RADICAL SECOND ONE 
⺃ U+2E83 CJK RADICAL SECOND TWO 
⺄ U+2E84 CJK RADICAL SECOND THREE 
... 

$ unichars -au '\p{Hangul}' 
ᄀ U+01100 HANGUL CHOSEONG KIYEOK 
ᄁ U+01101 HANGUL CHOSEONG SSANGKIYEOK 
ᄂ U+01102 HANGUL CHOSEONG NIEUN 
ᄃ U+01103 HANGUL CHOSEONG TIKEUT 
ᄄ U+01104 HANGUL CHOSEONG SSANGTIKEUT 
... 

* — uniprops y unichars están disponibles en el Unicode::Tussle distribución.

Cuestiones relacionadas