我想用
matcher.group("login");
在eclipse上的android 8+中,但似乎没有Matcher.group(String)存在。 你有(内置)解决方案吗?
答案 0 :(得分:9)
Android Pattern
类实现由ICU提供,确切地说,ICU4C。
Android中使用的正则表达式实现由ICU提供。正则表达式的表示法主要是其他Java语言实现中使用的表示法的超集。这意味着现有应用程序通常会按预期工作,但在极少数情况下,Android可能会接受其他实现不接受的正则表达式。
目前ICU4C并不支持命名捕获组。你必须依靠编号的捕获组。
ICU不支持命名捕获组。 http://bugs.icu-project.org/trac/ticket/5312
如果您确实需要该功能,则需要编写一个包装器并自行解析表达式以提供命名捕获组功能。
答案 1 :(得分:3)
我想我应该分享一个我发现的解决方案。由Tony Trinh(tony19)编写的Github上有一个很棒的库,可以让人们使用名为regex的组。
取自项目页面:
"这个轻量级库在Java 5/6(和Android)中添加了对命名捕获组的支持。
这是Google Code的named-regexp项目的一个分支(目前无效)。"
https://github.com/tony19/named-regexp
我刚刚在Android 4.1.1及更高版本上对此进行过测试,到目前为止,它的工作方式就像魅力一样。我惊喜地发现我可以简单地使用此库中的类替换我的Matcher和Pattern导入,并且所有仍使用编号组的现有正则表达式仍然有效。
我跳这个有帮助。