我试图查找是否someString
包含 someWord,但不工作:
String someString = "lazy cat";
someString.matches("^.*\\bazy\\b.*$");//do not matches "azy"
这里有什么问题?
像这样使用怎么样: -
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.*$");
\b
表示单词边界,这意味着您正在搜索单词azy
1而不是azy
作为子字符串进行搜索。
只需删除\b
即可获得预期结果。
someString.matches("^.*azy.*$");
但是,如果您只想搜索子字符串,则使用正则表达式效率低下。String.contains
是此类用例的标准替代方案:
someString.contains("azy");
脚注
单词被定义为(至少 1 个)单词字符的序列,在它之前或之后没有任何单词字符。
Word character,在默认设置中,定义为[a-zA-Z0-9_]
。
azy
您用单词边界 包围,\b
因此这意味着它之前和之后不能是任何单词字符,例如a-z
A-Z
0-9
or _
。