我试图找出someString
是否包含某些词,但不能正常工作:
String someString = "lazy cat";
someString.matches("^.*\\bazy\\b.*$");//do not matches "azy"
这里有什么问题?
答案 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)
您将azy
与word boundary \b
包围在一起,这意味着它之前和之后都不能包含a-z
A-Z
0-9
这样的字词或_
。