正则表达式而不是String.contains(xyz)(Java 1.7)

时间:2013-09-09 20:40:08

标签: java regex matcher

我试图找出someString是否包含某些词,但不能正常工作:

String someString = "lazy cat";

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

这里有什么问题?

3 个答案:

答案 0 :(得分: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.*$");

答案 1 :(得分:2)

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

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

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

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

someString.contains("azy");

<强>脚注

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

在默认设置中,

字符 定义为[a-zA-Z0-9_]

答案 2 :(得分:1)

您将azyword boundary \b包围在一起,这意味着它之前和之后都不能包含a-z A-Z 0-9这样的字词或_