Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Unicode-Aware di Java?

Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Unicode-Aware di Java?

Barbara Streisand
Barbara Streisandasal
2024-12-26 03:41:08182semak imbas

How Can I Create Unicode-Aware Regular Expressions in Java?

Persamaan Unikod untuk w dan b dalam Ungkapan Biasa Java

Pelaksanaan regex Java tidak menggunakan singkatan kelas aksara w untuk "sebarang huruf , digit atau tanda baca penyambung" seperti yang dilakukan oleh pelaksanaan lain. Ini menjadikan pemadanan perkataan Unicode lebih sukar. Isu ini berlanjutan kepada pemisah perkataan b, yang juga menunjukkan tingkah laku yang tidak konsisten dalam Java.

Unicode-Aware Equivalents

Untuk menyelesaikan isu ini, seseorang boleh menulis semula corak regex menggunakan penggantian berikut:

  • w: [pLpMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p{So}]]
  • b: (?:(?<=[pLpMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p{So}]])(?![pLpMp{Nd}p{Nl}p{Pc}[ p{InEnclosedAlphanumerics}&&p{So}]])|(?

Lain-lain Unicode Properties

Selain w dan b, regex Java kekurangan sokongan Unicode-aware untuk sifat lain. Walau bagaimanapun, sifat ini boleh dilanjutkan dengan menggunakan sintaks p, seperti yang ditunjukkan di bawah:

Java Syntax Unicode Property
p{Lower} Unicode Lowercase
p{Upper} Unicode Uppercase
p{ASCII} ASCII
p{Alpha} Unicode Alphabetic
p{Digit} Unicode Digit
p{Alnum} Unicode Alphanumeric
p{Punct} Unicode Punctuation
p{Graph} Unicode Graph
p{Print} Unicode Printable
p{Blank} Unicode Blank
p{Cntrl} Unicode Control
p{XDigit} Unicode Hexadecimal Digit
p{Space} Unicode Space

Unicode-Aware Regex

Dengan memasukkan pengganti Unicode-aware ini, seseorang boleh mencipta corak regex yang mengendalikan data Unicode dengan tepat. Contohnya, corak berikut sepadan dengan perkataan Unicode:

Pattern pattern = Pattern.compile("\w+"); // Unicode-aware \w equivalent

Corak ini boleh digunakan untuk memadankan perkataan dalam rentetan teks, tidak kira sama ada aksara ASCII atau Unicode-encoded.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Unicode-Aware di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn