我有成千上万种不同的正则表达式,它们看起来像这样:
^Mozilla.*Android.*AppleWebKit.*Chrome.*OPR\/([0-9\.]+)
如何获得与.*正则表达式匹配的子串?例如,对于上面的正则表达式,我会得到四个不同.*s的四个子串.另外,我事先并不知道.*有多少,即使我可以通过对给定的正则表达式字符串做一些简单的操作,但这会给程序带来更多的复杂性.我处理了相当多的数据,所以真正关注这里的效率.
用.*s 替换(.*)s并使用matcher.group(n).例如:
Pattern p = Pattern.compile("1(.*)2(.*)3");
Matcher m = p.matcher("1abc2xyz3");
m.find();
System.out.println(m.group(2));
Run Code Online (Sandbox Code Playgroud)
xyz
注意如何返回第二个 匹配(.*)(自m.group(2)使用以来).
此外,既然你提到你不知道.*你的正则表达式将包含多少,matcher.groupCount()你可以使用一种方法,如果正则表达式中唯一的捕获组确实是(.*)s.
为了您自己的启蒙,请尝试阅读有关捕获群组的内容.
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |