2012-01-24 28 views
6

Tôi có tệp có ký tự tiếng Hàn và tiếng Trung. Tôi muốn tìm cặp nơi báo cáo trong dấu ngoặc được sử dụng để cung cấp cho các hanja cho một từ Hàn Quốc, như thế này: 한문 (漢文)Perl regex tìm ký tự từ tập hợp tùy ý

Việc tìm kiếm sẽ giống như thế này: /[korean characters] \([chinese characters]\)/

Làm thế nào để xác định người Trung Quốc hay Ký tự Hàn Quốc, hoặc bất kỳ bộ nào khác như Cyrillic hoặc Thái Lan chẳng hạn?

Trả lời

9

Unicode cung cấp các thuộc tính xác định được thuộc tính nào tập lệnh. Các ký tự có thể được so khớp dựa trên thuộc tính tập lệnh của chúng bằng cách sử dụng \p{Script=...}.

Tôi không biết nhiều về các ngôn ngữ mà bạn đề cập, nhưng tôi nghĩ rằng bạn muốn

  • \p{Script=Han} aka \p{Han} cho Trung Quốc.
  • \p{Script=Hangul} aka \p{Hangul} cho tiếng Hàn.
  • \p{Script=Cyrillic} aka \p{Cyrl} cho Cyrillic.
  • \p{Script=Thai} aka \p{Thai} cho tiếng Thái.

Bạn có thể xem perluniprops để tìm hình bạn đang tìm kiếm hoặc bạn có thể sử dụng uniprops * để tìm các thuộc tính nào khớp với một ký tự cụ thể.

Để tìm ra ký tự nào trong một thuộc tính nhất định, bạn có thể sử dụng unichars *. (Đây là tính hữu hạn chế vì hầu hết các ký tự CJK không được đặt tên.)

$ 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 có sẵn từ các distro Unicode::Tussle.

Các vấn đề liên quan