Java:String.contains匹配完全匹配的单词 [英] Java: String.contains matches exact word

查看:156
本文介绍了Java:String.contains匹配完全匹配的单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java中

String term = "search engines"
String subterm_1 = "engine"
String subterm_2 = "engines"

如果我执行 term.contains(subterm_1),它将返回 true .我不要我希望 subterm term

If I do term.contains(subterm_1) it returns true. I don't want that. I want the subterm to exactly match one of the words in term

因此,类似 term.contains(subterm_1)的操作返回 false term.contains(subterm_2)的操作返回 true

Therefore something like term.contains(subterm_1) returns false and term.contains(subterm_2) returns true

推荐答案

\ b匹配单词字符为[a-zA-Z0-9_]的单词边界.

\b Matches a word boundary where a word character is [a-zA-Z0-9_].

这应该对您有用,并且您可以轻松地重用此方法.

This should work for you, and you could easily reuse this method.

public class testMatcher {
public static void main(String[] args){

    String source1="search engines";
    String source2="search engine";
    String subterm_1 = "engines";
    String subterm_2 = "engine";

    System.out.println(isContain(source1,subterm_1));
    System.out.println(isContain(source2,subterm_1));
    System.out.println(isContain(source1,subterm_2));
    System.out.println(isContain(source2,subterm_2));

}

    private static boolean isContain(String source, String subItem){
         String pattern = "\\b"+subItem+"\\b";
         Pattern p=Pattern.compile(pattern);
         Matcher m=p.matcher(source);
         return m.find();
    }

}

输出:

true
false
false
true

这篇关于Java:String.contains匹配完全匹配的单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆