Java:正则表达式 - 一般的组

时间:2012-05-28 22:22:17

标签: java regex

让我说我有一些正则表达式=“..(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 个答案:

答案 0 :(得分:2)

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

((?:group1)|(?:group2)) 

答案 1 :(得分:1)

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

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

答案 2 :(得分: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将尝试查找与正则表达式匹配的字符串的所有子序列(子字符串)。

答案 3 :(得分:0)

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