0

このコードには一種の問題があります。

String[] paragraph;
if(paragraph[searchKeyword_counter].matches("(.*)(\\b)"+"is"+"(\\b)(.*)")){

.matches()文字列内の特定の文字を使用して検索するのが間違っていない場合は、必要です.*が、別の単語に一致させずに文字を検索する必要があります。たとえば、検索しようとしているキーワードは、 のような文字isを含む単語と一致させたくありません。だから私は境界に使用しましたが、上記のコードは私にとってはうまくいきません。isship, his, this\b

例:

String[] Content= {"is,","his","fish","ish","its","is"};
String keyword = "is";
for(int i=0;i<Content.length;i++){
    if(content[i].matches("(.*)(\\b)"+keyword+"(\\b)(.*)")){
         System.out.println("There are "+i+" is.");
    }
}

ここで実現したいのは、 とのみ一致し、 とは一致しis is,ないということhis fishです。だから、英数字以外の文字やスペースの横にある文字でも一致させたいという意味でis一致する必要があります。is, and is

上記のコードの問題は何ですか?

コンテンツの 1 つに大文字の例ISがあり、それを と比較するとis、不一致になります。私が間違っている場合は修正してください。ソースの内容を変更せずに小文字を大文字に一致させる方法は?

4

2 に答える 2

0

次のようにスペースを追加するだけです:

メッセージがコンテンツ文字列に等しく、パターンがキーワードであるとします

 if ((message).matches(".* " + pattern + " .*")||(message).matches("^" + pattern + " .*")
            ||(message).matches(".* " + pattern + "$")) {
于 2015-01-30T11:35:47.723 に答える
0
String string = "...";
String word = "is";

Pattern p = Pattern.compile("\\b" + Pattern.quote(word) + "\\b");
Matcher m = p.matcher(string);
if (m.find()) {
  ...
}
于 2012-11-06T14:48:59.987 に答える