Java 模式和匹配器问题

Java 模式和匹配器问题,java,regex,matcher,Java,Regex,Matcher,我已经用Java编写了返回两个字符序列之间的信息字符串的代码。我的代码是: String caseDefendant = "vs."; Pattern caseDefendantPattern = Pattern.compile("(?<="+Pattern.quote(caseDefendant)+").*?(?=</span>)"); Matcher caseDefendantMatcher = caseDefendantPattern.matcher(pageConte

我已经用Java编写了返回两个字符序列之间的信息字符串的代码。我的代码是:

String caseDefendant = "vs."; 
Pattern caseDefendantPattern = Pattern.compile("(?<="+Pattern.quote(caseDefendant)+").*?(?=</span>)");
Matcher caseDefendantMatcher = caseDefendantPattern.matcher(pageContentString); 

while (caseDefendantMatcher.find()) {
    docketFile.write(caseDefendantMatcher.group().toString()); 
}
docketFile.write("^");
我的文件写为
info1 info1
。如何更改代码,使其不会写入第二组信息?

这里有一个循环:

while (caseDefendantMatcher.find()) {
    docketFile.write(caseDefendantMatcher.group().toString()); 
}
此循环将查找并打印所有匹配项。如果只需要第一个匹配项,则不要循环:

String caseDefendant = "vs."; 
Pattern caseDefendantPattern = Pattern.compile("(?<="+Pattern.quote(caseDefendant)+").*?(?=</span>)");
Matcher caseDefendantMatcher = caseDefendantPattern.matcher(pageContentString); 

if (caseDefendantMatcher.find()) {
    docketFile.write(caseDefendantMatcher.group().toString()); 
}

docketFile.write("^");
String case=“vs.”;

Pattern CaseDefendentPattern=Pattern.compile(“(?您总是可以在
docketFile.write(…
行)之后添加一个
break
,对吗?您必须在这里使用循环吗?您是否可以使用
if
而不是
while
?还可以使用
toString()
在代码中不是必需的,因为
group
已返回字符串。如果将CaseDefendentMatcher.find()从while循环中取出,会发生什么情况。如果您只想找到第一个项,是否应该在第一次匹配后停止?我对我的Java正则表达式犹豫不决:)
String caseDefendant = "vs."; 
Pattern caseDefendantPattern = Pattern.compile("(?<="+Pattern.quote(caseDefendant)+").*?(?=</span>)");
Matcher caseDefendantMatcher = caseDefendantPattern.matcher(pageContentString); 

if (caseDefendantMatcher.find()) {
    docketFile.write(caseDefendantMatcher.group().toString()); 
}

docketFile.write("^");