2012-01-24 63 views
6

我有一個帶有韓文和中文字符的文件。我想找到對,其中括號語句用來給漢字的韓語單詞,像這樣:한문(漢文)Perl正則表達式從任意集合中查找字符

搜索將是這個樣子:/[korean characters] \([chinese characters]\)/

如何指定的中國或韓文字符或其他任何設置,例如西里爾文或泰文?

回答

9

Unicode提供的屬性標識字符所屬的腳本。字符可以使用\p{Script=...}根據其腳本屬性進行匹配。

我不知道很多關於你提到的語言,但我想你想

  • \p{Script=Han}又名\p{Han}爲中國。
  • \p{Script=Hangul}又名\p{Hangul}朝鮮語。西里爾文的
  • \p{Script=Cyrillic} aka \p{Cyrl}
  • \p{Script=Thai} aka \p{Thai}泰國。

你可以看看perluniprops找到你所要找的人,或者你可以使用uniprops *找出哪些屬性匹配特定的字符。

$ 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 

要找出給定屬性中的哪些字符,可以使用unichars *。 (這是用處有限,因爲大多數CJK字符沒有被命名。)

$ 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 
... 

* — unipropsunichars可從Unicode::Tussle發行。