Java 我想检查字符串中是否存在一个单词或一组单词

Java 我想检查字符串中是否存在一个单词或一组单词,java,android,regex,pattern-matching,wordsearch,Java,Android,Regex,Pattern Matching,Wordsearch,我的要求是检查一组单词或单个单词是否出现在较大的字符串中。我尝试使用String.contains()方法,但如果较大的字符串有新行字符,则该方法将失败。目前我正在使用下面提到的regex。但这只适用于一个词。搜索的文本是用户输入的值,可以包含多个单词。这是一个android应用程序 String regex = ".*.{0}" + searchText + ".{0}.*"; Pattern pattern = Pattern.compile(regex); pattern.matcher(

我的要求是检查一组单词或单个单词是否出现在较大的字符串中。我尝试使用String.contains()方法,但如果较大的字符串有新行字符,则该方法将失败。目前我正在使用下面提到的
regex
。但这只适用于一个词。搜索的文本是用户输入的值,可以包含多个单词。这是一个android应用程序

String regex = ".*.{0}" + searchText + ".{0}.*";
Pattern pattern = Pattern.compile(regex);
pattern.matcher(largerString).find();

Sample String
String largerString    ="John writes about this, and John writes about that," +
" and John writes about everything. ";

String searchText = "about this";

为什么不直接用空格替换换行符,并将其全部转换为小写

    String s = "hello";
    String originalString = "Does this contain \n Hello?";
    String formattedString = originalString.toLowerCase().replace("\n", " ");
    System.out.println(formattedString.contains(s));
编辑:想一想,我真的不明白换行是如何产生不同的

编辑2:我是对的。换行不重要

        String s = "hello";
        String originalString = "Does this contain \nHello?";
        String formattedString = originalString.toLowerCase();
        System.out.println(formattedString.contains(s));

下面是不使用正则表达式的代码

String largerString    = "John writes about this, and John writes about that," +" and John writes about everything. ";
String searchText = "about this";
Pattern pattern = Pattern.compile(searchText);
Matcher m = pattern.matcher(largerString);

if(m.find()){
System.out.println(m.group().toString());
}
结果:

关于此


我希望它能对您有所帮助。

如果您包含所需的示例输入和输出,可能会更加清楚使用regex
*\bhello\b.*
您想要匹配什么:
{0}
?我正在仔细研究您想要的内容,似乎我们必须引入一个布尔变量,然后使用matcher.find()循环为了证实这一点,我已经看过了这个例子。但这不是我想要的。这对多词搜索没有帮助你在android平台上检查过吗?注意:文本可以是UTF-8编码,可以是中文、日文或韩文。我没有检查。不幸的是,您必须自己手动测试它。