2012-01-24 14 views
6

Ho un file con caratteri coreani e cinesi. Voglio trovare le coppie in cui le dichiarazioni parentesi sono usati per dare il Hanja per una parola coreana, come questo: 한문 (漢文)Perl regex trova carattere da set arbitrario

La ricerca sarebbe simile a questa: /[korean characters] \([chinese characters]\)/

Come faccio a specificare il cinese o Ad esempio, personaggi coreani o altri set come il cirillico o il thailandese?

risposta

9

Unicode fornisce proprietà identificative a cui appartiene lo script caratteri. I caratteri possono essere abbinati in base alla loro proprietà di script usando \p{Script=...}.

Non so molto circa le lingue che hai citato, ma penso che si desidera

  • \p{Script=Han} aka \p{Han} per il cinese.
  • \p{Script=Hangul} alias \p{Hangul} per il coreano.
  • \p{Script=Cyrillic} alias \p{Cyrl} per il cirillico.
  • \p{Script=Thai} aka \p{Thai} per Thai.

Si potrebbe dare un'occhiata a perluniprops per trovare quello che stai cercando, oppure si potrebbe usare uniprops * per trovare quale proprietà corrispondono un carattere specifico.

$ 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 

per scoprire quali personaggi sono in una determinata proprietà, è possibile utilizzare unichars *. (Questo è di utilità limitata poiché la maggior parte caratteri CJK non sono chiamati.)

$ 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 e unichars sono disponibili dal Unicode::Tussle distro.

Problemi correlati