0

我试图查找是否someString包含 someWord,但不工作:

String someString = "lazy cat";

someString.matches("^.*\\bazy\\b.*$");//do not matches "azy"

这里有什么问题?

4

3 回答 3

2

像这样使用怎么样: -

Pattern p = Pattern.compile("Your string");
Matcher m = p.matcher(inputString);
while (m.find()) {
   String matched = m.group(1);
   // Do something
}

编辑:- 看完你的字符串后:-

String someString = "lazy cat";
someString.matches("^.*azy.*$");
于 2013-09-09T20:44:26.403 回答
2

\b表示单词边界,这意味着您正在搜索单词azy1而不是azy作为子字符串进行搜索。

只需删除\b即可获得预期结果。

someString.matches("^.*azy.*$");

但是,如果您只想搜索子字符串,则使用正则表达式效率低下。String.contains是此类用例的标准替代方案:

someString.contains("azy");

脚注

单词被定义为(至少 1 个)单词字符的序列,在它之前或之后没有任何单词字符。

Word character,在默认设置中,定义为[a-zA-Z0-9_]

于 2013-09-09T20:46:30.147 回答
1

azy您用单词边界 包围,\b因此这意味着它之前和之后不能是任何单词字符,例如a-z A-Z 0-9or _

于 2013-09-09T20:47:34.450 回答