2

因此,我一直在尝试在线查找是否有办法让字符串在 java 中搜索另一个完整的字符串。不幸的是,我还没有找到任何有效的方法。

我的意思是:

String str = "this is a test";

如果我搜索this is它应该返回true. 但如果我搜索this i它应该是错误的。

我尝试过使用String.matches(),但这不起作用,因为某些正在搜索的字符串可能包含 [、]、?等 - 这会将其丢弃。usingString.indexOf(search) != -1也不起作用,因为它会为部分单词返回 true。

4

2 回答 2

4

在正则表达式中使用\b零宽度单词边界分隔符。

String str = "this is a test";
String search = "this is";
Pattern p = Pattern.compile(String.format("\\b%s\\b", Pattern.quote(search)));
boolean matches = p.matcher(Pattern.quote(str)).find();
于 2013-10-20T18:53:26.000 回答
1

如果您也将单词与非字母字符分开,而不仅仅是空格,您可以使用环视机制。试试这种方式

String str = "[this] is...";
String search = "[this] is";

Pattern p = Pattern.compile("(?!<\\p{IsAlphabetic})"
        + Pattern.quote(search) + "(?!\\p{IsAlphabetic})");
boolean matches = p.matcher(str).find();

它将检查匹配的部分之前或之后是否没有字母字符。

注意:\\p{IsAlphabetic}包括所有 Unicode 字母字符,例如ż ź ć,而不仅仅是a-z A-Z范围。

于 2013-10-20T19:16:16.057 回答