Android可选字边界正则表达式

Ten*_*tux 6 regex android patternsyntaxexception

我在定位Android平台2.2.3时遇到正则表达式问题.

以下正则表达式在我的桌面上定位Java VM时起作用,而正则表达式也在.NET应用程序上工作.

Pattern.compile("\\b?")
Run Code Online (Sandbox Code Playgroud)

但是当我定位我的手机时,我得到一个PatternSyntaxException.有任何想法吗?

Bil*_*ard 4

我可以确认,PatternSyntaxException在 Android 模拟器中运行时,这确实会抛出 a 异常,但在常规 Java 应用程序中则不会。除了 Android 中使用的正则表达式实现与普通 Java SDK 中不同之外,我不明白为什么会出现这种情况。来自Pattern Android 开发者页面:

Android 中使用的正则表达式实现由 ICU 提供。正则表达式的表示法主要是其他 Java 语言实现中使用的表示法的超集。这意味着现有应用程序通常会按预期工作,但在极少数情况下,Android 可能会接受其他实现不接受的正则表达式。

作为一种解决方法,我确实发现可以通过将单词边界断言包含在非捕获组中来解决该异常。

Pattern.compile("(?:\\b)?");
Run Code Online (Sandbox Code Playgroud)

(捕获组也可以,但我怀疑您是否需要它。)

我建议您将此作为错误报告,看看是否能得到官方回复。(我已经搜过了,好像还没有报道。)