android java正则表达式命名组

时间:2015-01-08 06:49:02

标签: android regex regex-group

我想用

matcher.group("login");

在eclipse上的android 8+中,但似乎没有Matcher.group(String)存在。 你有(内置)解决方案吗?

2 个答案:

答案 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导入,并且所有仍使用编号组的现有正则表达式仍然有效。

我跳这个有帮助。