Java 正規表示式中w 和b 的Unicode 等效項
Java 的正規表示式實作對Unicode 的支援有限,這使得匹配單字或單字邊界準確。預設的 w 和 b 轉義僅對應於 ASCII 字元。
要解決此問題,請考慮使用重寫這些轉義的函數,將其替換為支援 Unicode 的定義。此函數可以重寫以下 14字元類別轉義:
\w \W \s \S \v \V \h \H \d \D \b \B \X \R
重寫的轉義定義:
- w:捕捉字母、數字和某些標點符號(p {L}p Mp{Nd}p{Nl}p{Pc}[p{InEnlatedAlphanumerics}&&p{So}]])
- W:排除w
匹配的所有字元- s:匹配 Unicode 空白([u0009-u000Du0020u0085u00A0u1680u180Eu2000-u200Au2028u2029uFu20205所有符合的字元
- v:符合 Unicode 垂直空白([u000A-u000Du0085u2028u2029])
- V:排除 v 相符的所有字元
- V:排除 v 相符的所有字元
- h:符合 Unicode水平空白([u0009u0020u00A0u1680u180Eu2000-u200Au202Fu205Fu3000])
- H:排除 h 匹配的所有字元
-
- H:排除 h 匹配的所有字元
- d:符合(p{Nd})
- D:排除 d 匹配的所有字元
- b:僅考慮 Unicode 單字字元來匹配單字邊界
- B:考慮 Unicode單字字元來符合非單字邊界
X:符合擴充字素cluster
R:符合換行符,包括Unicode 行中斷
邊界定義:
b : (?:(?
B: (?:(?修正Java Java:可以使用原始討論執行緒中提供的程式碼在Java 中實作此功能。透過使用此程式碼,您可以重寫正規表示式模式以更好地處理 Unicode 字元。
注意:在 Java 7 中,Pattern 類別引入了 UNICODE_CHARACTER_CLASS 標誌,該標誌啟用了 Unicode 支援這些轉義預設情況下。 以上是如何改進 Java 正規表示式中對 \w 和 \b 的 Unicode 支援?的詳細內容。更多資訊請關注PHP中文網其他相關文章!