Java 模式和匹配器问题
我已经用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
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("^");