텍스트를 용어집 목록과 대조하려고합니다. 문제는 내 패턴이 한 텍스트에 대해 다른 행동을 보이는 것입니다. ..., 난 단지 정확한 단어 용어와 일치 발견하고, 단어를 찾는 것이 보내고, S로 끝나는 피하려고에만 반환 다음과 같은 패턴 매처와중간에 s, ing 또는 단어로 끝나는 단어를 피하는 일치 자
\nfor Sprints \nSprints \nSprinting \nAccount Accounts Accounting\nSprintsSprints
: 여기 예를 들어 내 텍스트입니다 내가 스프린트를 시도하는 경우 나 "계정"단어에 대한 정답은, 그러나, 그것은 잘하지 않은 나 스프린트, 스 프린팅 등 반환
private static String findGlossaryTerms(String response, List<Glossary> glossary) {
StringBuilder builder = new StringBuilder();
for (int offset = 0; offset < response.length(); offset++) {
boolean match = false;
if (response.startsWith("<", offset)) {
String newString = response.substring(offset);
Pattern findHtmlTag = Pattern.compile("\\<.*?\\>");
Matcher matcher = findHtmlTag.matcher(newString);
if (matcher.find()) {
String htmlTag = matcher.group(0);
builder.append(htmlTag);
offset += htmlTag.length() - 1;
match = true;
}
}
for (Glossary item : glossary) {
if (response.startsWith(item.getTerm(), offset)) {
String textFromOffset = response.substring(offset - 1);
Pattern findTerm = Pattern.compile("(" + item.getTerm() + ")(\\W)",Pattern.DOTALL);
Matcher matcher = findTerm.matcher(textFromOffset);
if (matcher.find()) {
builder.append("<span class=\"term\">").append(item.getTerm()).append("</span>");
offset += item.getTerm().length() - 1;
match = true;
break;
}
}
if (!match)
builder.append(response.charAt(offset));
}
return builder.toString();
}
실제 사례를 넣을 수 있습니까? 정확한 단어와 일치 시키려면 앵커 ('^ $') 또는 경계 ('\ b')를 사용하십시오. –
정확히 내가 얻고있는 문자열의 일부 – user261002