我已经用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("^");
我想做的是返回
vs.
和</span>
之间的信息。问题是在字符串“ pageContentString”中,序列vs.INFORMATION</span>
发生两次,因此当我将其写入文件时,它只写入两次,而不是一次,而我只需要写入一次信息。例如,如果pageContentString是:"vs.info1</span> aaabbbccc vs.info1</span>"
我的文件写为
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("^");