首頁 >Java >java教程 >如何改進 Java 正規表示式中對 \w 和 \b 的 Unicode 支援?

如何改進 Java 正規表示式中對 \w 和 \b 的 Unicode 支援?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-10 11:03:13190瀏覽

How Can I Improve Unicode Support in Java Regular Expressions for w and b?

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)可以使用下列邏輯重寫:
b : (?:(? B: (?:(?

修正Java Java:

可以使用原始討論執行緒中提供的程式碼在Java 中實作此功能。透過使用此程式碼,您可以重寫正規表示式模式以更好地處理 Unicode 字元。

注意:在 Java 7 中,Pattern 類別引入了 UNICODE_CHARACTER_CLASS 標誌,該標誌啟用了 Unicode 支援這些轉義預設情況下。

以上是如何改進 Java 正規表示式中對 \w 和 \b 的 Unicode 支援?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn