我在定位Android平台2.2.3时遇到正则表达式问题。
以下正则表达式在我的桌面上定位Java VM时起作用,而正则表达式也在.NET应用程序上工作。
Pattern.compile("\\b?")
但是当我瞄准手机时,我得到一个PatternSyntaxException。有什么想法吗?
答案 0 :(得分:4)
我可以确认在Android模拟器中运行时会抛出PatternSyntaxException
,但在常规Java应用程序中则不会。我不明白为什么会出现这种情况,除了Android中使用的正则表达式实现与普通Java SDK中的不同。来自Pattern Android开发者页面:
Android中使用的正则表达式实现由ICU提供。正则表达式的表示法主要是其他Java语言实现中使用的表示法的超集。这意味着现有应用程序通常会按预期工作,但在极少数情况下,Android可能会接受其他实现不接受的正则表达式。
作为解决方法,我确实发现你可以通过在非捕获组中包含单词边界断言来绕过异常。
Pattern.compile("(?:\\b)?");
(捕获组也可以,但我怀疑你需要它。)
我建议你report this as a bug看看你是否能得到官方回复。 (我已经搜索过了,但似乎还没有报道。)