나는 텍스트에 국가 이름을 표시하는 코드를 작성 중입니다. 나라 이름으로 사전을 사용하고 있습니다. India, America, Sri Lanka, ...
입니다. 현재 text.contains(key)
을 key
과 함께 사용하고 있습니다. 그러나 이것은 Indiana
과 같은 문자열에도 true를 반환합니다. 나는 문장의 단어를 배열에 넣고 그 다음에 포함하는 것을 시도했다. 비슷한 접근법은 같음으로 간주 될 수 있지만 실제로는 느리다. 당신이 생각할 수있는 다른 빠른 방법이 있습니까?자바를 사용하여 문장의 정확한 단어 찾기
2
A
답변
9
은 어쩌면 당신은 텍스트 처리 라이브러리를 사용한다 word boundary 클래스 \b
s.matches(".*\\b" + key + "\\b.*")
0
이 효과가 있어야합니다. String.indexOf(String)
으로 시도해 볼 수도 있습니다. -1이 아닌 다른 것을 반환하면 해당 쿼리 문자열이 해당 문자열에 존재하고 그렇지 않으면 그렇지 않습니다.
1
를 사용해보십시오. 여기
는 정규식 솔루션입니다 :import java.util.regex.*;
import static java.lang.System.*;
public class SO {
public static void main(String[] args) {
String[] dict={"india","america"};
String patStr=".*\\b(" + combine(dict,"|") + ")\\b.*";
out.println("pattern: "+patStr+"\n");
Pattern pat=Pattern.compile(patStr);
String input1="hello world india indiana";
out.println(input1+"\t"+pat.matcher(input1).matches());
String input2="hello world america americana";
out.println(input2+"\t"+pat.matcher(input2).matches());
String input3="hello world indiana amercana";
out.println(input3+"\t"+pat.matcher(input3).matches());
}
static String combine(String[] s, String glue){
int k=s.length;
if (k==0) return null;
StringBuilder out=new StringBuilder();
out.append(s[0]);
for (int x=1;x<k;++x)
out.append(glue).append(s[x]);
return out.toString();
}
}
출력 :
pattern: .*\b(india|america)\b.*
hello world india indiana true
hello world america americana true
hello world indiana amercana false
관련 문제
- 1. 토큰 화 된 문장의 정확한 위치 찾기
- 2. 문자열의 일부로 정확한 단어 찾기
- 3. 문장의 파이썬 클리닝 단어
- 4. Perl 정규 표현식으로 정확한 단어 찾기
- 5. 검색어 템플릿으로 정확한 단어 찾기 OpenSearchServer
- 6. RegEx를 사용하여 문장의 다섯 번째 단어
- 7. 배열을 사용하여 정확한 단어 대체
- 8. grep을 사용하여 정확한 단어 일치
- 9. 자바를 사용하여 메타 "설명"찾기
- 10. 영어 단어 및 한자로 된 문장의 길이 찾기
- 11. char []/문장의 자리 바꾸기 단어
- 12. 스탠포드 nlp를 사용하여 문장의 긴장 찾기
- 13. 자바를 사용하여 프로그래밍 방식으로 단어 문서 보호
- 14. 자바를 사용하여 특정 단어 다음에 파일 읽기
- 15. 자바를 사용하여 단어 문서에 대한 참조 추가
- 16. Trie를 사용하여 단어 목록에서 복합 단어 찾기
- 17. preg_match_all을 사용하여 모든 단어 찾기
- 18. PDFSharp를 사용하여 PDF로 단어 찾기
- 19. NSString에서 정확한 단어 검색
- 20. Sqlite FTS 정확한 단어
- 21. 정확한 단어 일치 Solr
- 22. 자바에서 정규식을 사용하여 정확한 단어 일치
- 23. 자바를 사용하여 그래프에서 경로 알고리즘 찾기
- 24. 자바를 사용하여 morphia mongodb로 지리적 공간 찾기
- 25. 문장의 시작 부분에서 단어 목록을 제거하는 방법
- 26. R에서 문장의 단어 빈도를 구하는 방법은 무엇입니까?
- 27. 찾기 단어
- 28. 태그 사이에 정확한 단어를 찾기
- 29. 단어 벡터로 형성된 문장의 코사인 유사성이 이제 단어 순서를 측정합니까?
- 30. 배열을 사용하여 java에서 문장의 단어 수를 계산하는 방법은 무엇입니까?
가 왜 느린 고려 코드의 관련 부분을 게시하지? 자신이하는 일을 이해하고 개선하는 데 도움이 될 것입니다. –
'contains()'는 발견 한 부분 일치에 대해 true를 반환합니다. 그러나 당신이'equals()'가'contains()'보다 느리다는 것을 어떻게 결정 했습니까? 나는 당신의 질문을 잘 이해하지 못했을 수도 있습니다. – asgs
정규식을 사용하지 않는 이유는 무엇입니까? –