我在针对Android平台2.2.3时遇到了正则表达式的问题。
下面的正则表达式在针对我的桌面上的Java虚拟机时可行,该正则表达式在.NET应用程序上也有效。
Pattern.compile("\\b?")
但是当我针对我的手机进行目标设置时,会出现PatternSyntaxException异常。有任何想法吗?
我在针对Android平台2.2.3时遇到了正则表达式的问题。
下面的正则表达式在针对我的桌面上的Java虚拟机时可行,该正则表达式在.NET应用程序上也有效。
Pattern.compile("\\b?")
PatternSyntaxException
,但在常规Java应用程序中不会。我看不出为什么会这样,除了Android中使用的正则表达式实现与正常的Java SDK中不同之外。从Pattern Android开发者页面得知:
Android中使用的正则表达式实现是由ICU提供的。正则表达式的符号大多是其他Java语言实现中使用的符号的超集。这意味着现有的应用程序通常会按预期工作,但在罕见情况下,Android可能会接受其他实现不接受的正则表达式。
作为解决方法,我发现您可以通过将单词边界断言放在非捕获组中来避免异常。
Pattern.compile("(?:\\b)?");
使用捕获组同样可以,但我认为您并不需要它。
我建议您报告此问题作为错误,以查看是否可以获得官方回复。(我已经搜索过了,似乎还没有被报告。)