ホームページ > Java > &#&チュートリアル > \w および \b の Java 正規表現における Unicode サポートを改善するにはどうすればよいですか?

\w および \b の Java 正規表現における Unicode サポートを改善するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-10 11:03:13
オリジナル
221 人が閲覧しました

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 の charclass エスケープを書き換えることができます:

\w \W \s \S \v \V \h \H \d \D \b \B \X \R
ログイン後にコピー

書き換えられたエスケープ定義:

  • w: 文字、数字、および特定の句読点文字をキャプチャします。 (p{L}pMp{Nd}p{Nl}p{Pc}[p{InEnclosedAlphanumerics}&&p{So}]])
  • W: w
  • に一致するすべての文字を除外します
  • s: Unicode の空白と一致します([u0009-u000Du0020u0085u00A0u1680u180Eu2000-u200Au2028u2029u202Fu205Fu3000])
  • S: s に一致するすべての文字を除外します
  • v: Unicode 垂直方向に一致します空白 ([u000A-u000Du0085u2028u2029])
  • V: v に一致するすべての文字を除外します
  • h: Unicode の水平空白と一致します([u0009u0020u00A0u1680u180Eu2000-u200Au202Fu205Fu3000])
  • H: h に一致するすべての文字を除外します
  • d: Unicode 数字 (p{​​Nd}) に一致します
  • D: d に一致するすべての文字を除外します
  • b: Unicode 単語文字のみを考慮して単語境界と一致します
  • B: Unicode 単語文字を考慮して非単語境界と一致します
  • X: 拡張書記素と一致しますクラスタ
  • R: Unicode 行を含む改行と一致します。 Break

境界定義:

境界エスケープ (b および B) は、次のロジックを使用して書き換えることができます:

  • b : (?:(?
  • B: (?:(?

による Java の修正Java:

この関数は、元のディスカッション スレッドで提供されたコードを使用して Java で実装できます。このコードを使用すると、正規表現パターンを書き換えて Unicode 文字をより適切に処理できます。

注:
Java 7 では、パターン クラスに UNICODE_CHARACTER_CLASS フラグが導入され、これにより、Unicode 文字の Unicode サポートが有効になります。これらはデフォルトでエスケープされます。

以上が\w および \b の Java 正規表現における Unicode サポートを改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート