Я написал код на 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
. Как мне изменить свой код, чтобы он не записывал вторую группу информации?
Вы всегда можете добавить 'break' после' docketFile.write (... 'линии, прямо – dasblinkenlight
ли вы должны использовать цикл здесь? ? Вы можете просто использовать 'if' вместо' while'? Также 'toString()' не требуется в вашем коде, потому что 'group' уже возвращает String. – Pshemo
Что произойдет, если вы выберете caseDefendantMatcher.find() из среды Если вам нужен только первый найденный элемент, вы не должны останавливаться после первого матча? Я не согласен с моим Java-выражением :) –