0

可以说我有一些正则表达式 = "..(group1)..|..(group2).."

pattern.matcher(regex)
matcher.find()
// how can i access the result?? 
// i dont wanna use matcher.group(1) or matcher.group(2) 
// since i don't really know what will be the result.

正如你所看到的,我不知道如何得到我的结果。我正在寻找类似 matcher.getResultedGroup 的东西。谁能解释一下我该怎么办?

  • 如果你有其他建议来扩展我的知识,我很想听听..
4

4 回答 4

2

您可以使用单个捕获组,其中包含非捕获组:

((?:group1)|(?:group2)) 
于 2012-05-28T22:24:23.890 回答
1

迭代Matcher.start(groupNum)groupNum那不是0,但从0你正在寻找的开始(假设它是你的整个表达)。

否则,将整个子表达式包含到捕获组中:((group1)|(group2)...)并将内部组的起始索引与外部组进行比较。

于 2012-05-28T22:26:19.857 回答
0

如果您不想,则无需进入子组。实际匹配在组 0:Matcher.group(0)或等效的Matcher.group(). 请注意,您可能希望使用非捕获组来保护资源。

于 2012-05-29T00:19:41.030 回答
0

请参阅 Javadoc http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.htmlhttp://docs.oracle.com/javase/6/docs/api/java /util/regex/Matcher.html

也许这样的事情会起作用:

while(matcher.find()) {
    String groupMatch = matcher.group(groupIndex)
}

matcher.find 将尝试查找与您的正则表达式匹配的字符串的所有子序列(子字符串)。

于 2012-05-28T22:24:59.947 回答