gpt4 book ai didi

java - 模式和匹配器的问题

转载 作者:行者123 更新时间:2023-12-01 13:34:20 26 4
gpt4 key购买 nike

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

关于java - 模式和匹配器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com