中(#)記号一部のテキストが(境界を無視して)単語を含む場合、私はチェックの正規表現を持っているのマッチング
String regexp = ".*\\bSOME_WORD_HERE\\b.*";
が、この正規表現の戻りfalse
「SOME_WORDは」#(ハッシュタグ)で始まります。ポンドと単語の正規表現
Example, without #
String text = "some text and test word";
String matchingWord = "test";
boolean contains = text.matches(".*\\b" + matchingWord + "\\b.*");
// now contains == true;
But with hashtag `contains` was false. Example:
text = "some text and #test word";
matchingWord = "#test";
contains = text.matches(".*\\b" + matchingWord + "\\b.*");
//contains == fasle; but I expect true
したがって、単語の境界として一致させる必要はありますか?文字列または空白の開始?通常、 '(?<!\\ S)'を最初の境界として使用し、 '(?!\\ S)'を後続のものとして使用することができます( 'text.matches(" \ S) "+ matchingWord +"(?!\\ S)。* ");')。 –
検索語が単語の中に入っていないことを確認するもう1つの通常の解決方法は、明確な語の境界を使用していることです:text.matches( "。*(?<!\\ w)" + matchingWord + " * ")' –
特別なケースや複数のシナリオがある場合に 'regex'のために' text.contains( "#test") 'result'を' true'にするだけです –