我有一个包含韩文和中文字符的文件。我想找到使用括号语句来对韩语单词进行hanja的对,如下所示:한문(汉文)
搜索结果如下:/[korean characters] \([chinese characters]\)/
如何指定中文或韩文字符,或其他任何设置,例如西里尔文或泰文?
答案 0 :(得分:9)
Unicode提供用于标识脚本字符所属的属性。可以使用\p{Script=...}
基于脚本属性匹配字符。
我对你提到的语言知之甚少,但我认为你想要
\p{Script=Han}
又名\p{Han}
为中文。\p{Script=Hangul}
又称\p{Hangul}
为韩语。\p{Script=Cyrillic}
又名\p{Cyrl}
代表西里尔语。\p{Script=Thai}
又称\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
...
* - uniprops
和unichars
可从Unicode::Tussle发行版中获取。