I was trying to implement a method which checks whether a list of words is contained in a text. The problem is I cannot use the contains method because I just want the word to be detected (if the word is ‘car’ then with the string ‘cars’ the method should return false). In addition, the method should be case-sensitive.
EDIT:
String goodWord="word"; String review="This is a text containing the word."; System.out.println(review.matches("\w*"+goodWord+"\w*"));
Advertisement
Answer
import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String[] goodWords = { "good", "word" }; String goodWordsUnionPatternStr = "(" + String.join("|", goodWords) + ")"; Pattern strContainsGoodWordsPattern = Pattern.compile(".*\b" + goodWordsUnionPatternStr + "\b.*"); String review = "This is a text containing the word."; System.out.println(strContainsGoodWordsPattern.matcher(review).matches()); } }
Explained:
b
is word boundaryPattern.compile is preferred way due to performance