让我说我有一些正则表达式=“..(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这样的东西..任何人都可以解释我该怎么办?
答案 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.html和http://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()
。请注意,您可能希望使用非捕获组来保护资源。