Java正则表达式首先匹配

如何告诉以下正则表达式只找到FIRST匹配? 以下代码继续在字符串中查找所有可能的正则表达式。

即我只寻找子串的索引(200-800;50]

 public static void main(String[] args) { String regex = "(\\[|\\().+(\\]|\\))"; String testName= "DCGRD_(200-800;50]MHZ_(PRE|PST)_(TESTMODE|REG_3FD)"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(testName); boolean found = false; while (matcher.find()) { System.out.format("I found the text" + " \"%s\" starting at " + "index %d and ending at index %d.%n", matcher.group(), matcher.start(), matcher.end()); found = true; } if (!found){ System.out.println("Sorry, no match!"); } } 

matcher.group(1)将返回第一场比赛。

如果你的意思是懒惰匹配而不是急切匹配,请尝试添加? 在正则表达式中的+之后。

或者,您可以考虑使用比.+更具体的内容来匹配括号之间的内容。 如果你只是期待字母,数字和一些字符,那么像[-A-Z0-9;_.]+会更好吗?