繁体   English   中英

模式和匹配器问题

[英]Issue with Pattern and Matcher

我已经用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("^");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM