Android プラットフォーム 2.2.3 を対象とする場合、正規表現に問題があります。
次の正規表現は、デスクトップ上の Java VM を対象とする場合に機能し、正規表現は .NET アプリケーションでも機能します。
Pattern.compile("\\b?")
しかし、自分の電話をターゲットにすると、PatternSyntaxException が発生します。何か案は?
Android プラットフォーム 2.2.3 を対象とする場合、正規表現に問題があります。
次の正規表現は、デスクトップ上の Java VM を対象とする場合に機能し、正規表現は .NET アプリケーションでも機能します。
Pattern.compile("\\b?")
しかし、自分の電話をターゲットにすると、PatternSyntaxException が発生します。何か案は?
PatternSyntaxException
Android エミュレーターで実行するとスローされることを確認できますが、通常の Java アプリケーションではスローされません。Android で使用される正規表現の実装が通常の Java SDK とは異なるという事実を除けば、なぜそうなるのかわかりません。Pattern Android Developers ページから:
Android で使用される正規表現の実装は、ICU によって提供されます。正規表現の表記は、ほとんどが他の Java 言語実装で使用されるもののスーパーセットです。これは、既存のアプリケーションが通常期待どおりに動作することを意味しますが、まれに、他の実装では受け入れられない正規表現を Android が受け入れる場合があります。
回避策として、単語境界アサーションを非キャプチャ グループで囲むことにより、例外を回避できることを発見しました。
Pattern.compile("(?:\\b)?");
(キャプチャ グループも同様に機能しますが、必要があるとは思えません。)
これをバグとして報告して、正式な回答が得られるかどうかを確認することをお勧めします。(調べてみましたが、まだ報告されていないようです。)