Java 如何找到字符串中单词的精确匹配项

Java 如何找到字符串中单词的精确匹配项,java,regex,Java,Regex,我有一根这样的绳子 This is just a test-like thing. I want to test this 我想使用一个匹配test的正则表达式,这样它只匹配test,而不是类似test的东西。这个的正则表达式是什么。我尝试了“\b测试\b”,但不起作用。(?)(?单词边界\\b在这种情况下不起作用,因为连字符-也被认为是“非单词”字符 (?<=\\s|^)test(?=\\s|$) 使用此选项,并使用空格: String test = "This is just a

我有一根这样的绳子

This is just a test-like thing. I want to test this

我想使用一个匹配test的正则表达式,这样它只匹配test,而不是类似test的东西。这个的正则表达式是什么。我尝试了“\b测试\b”,但不起作用。

(?
)(?单词边界
\\b
在这种情况下不起作用,因为连字符
-
也被认为是“非单词”字符

(?<=\\s|^)test(?=\\s|$)
使用此选项,并使用空格:

String test = "This is just a test-like thing. I want to test this";
Pattern p = Pattern.compile("(?<=\\s|^)test(?=\\s|$)");
Matcher m = p.matcher(test);
while (m.find()) {
    System.out.println(String.format("Found %s at index %d%n", m.group(), m.start()));
}

单词边界
\\b
在这种情况下不起作用,因为连字符
-
也被视为“非单词”字符

使用此选项,并使用空格:

String test = "This is just a test-like thing. I want to test this";
Pattern p = Pattern.compile("(?<=\\s|^)test(?=\\s|$)");
Matcher m = p.matcher(test);
while (m.find()) {
    System.out.println(String.format("Found %s at index %d%n", m.group(), m.start()));
}
请尝试以下正则表达式:

\stest(\.|\s)
请尝试以下正则表达式:

\stest(\.|\s)

你能把你试过的完整代码包括进去吗?连字符是一个词边界。什么构成词?是“it's”一个词?还是类似词?这是一个测试。
?你能把你试过的完整代码包括进去吗?连字符是一个词边界。什么构成词?是“it's”一个单词?或类似的单词?这是一个测试。
?@vks我没有剽窃你的答案。在看到你的答案之前,我只是在我的答案上工作。事实上,它不一样。我的显示实际的Java代码(现在也是你的,编辑后).Mine也会显示匹配的索引,而你的则不会。@vks我没有剽窃你的答案。在看到你的答案之前,我只是在我的上面工作。事实上,这不一样。Mine会显示实际的Java代码(现在也是你的,编辑后)。Mine也会显示匹配的索引,你的不会。