-3

我想从一段中找到一个特定的词。我用边界来找到一个。考虑以下示例。

String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,";
String keyword = "Hell";
boolean matches = var.matches(".*\\b"+keyword+\\b.*");
System.out.println(matches);

当我在我的 unix 服务器上运行这段代码时,它给了我以下错误。

java.util.regex.PatternSyntaxException:索引 5 附近的非法/不受支持的转义序列
\bTMTH_EQUIP_IDLE_REASON\b。
^
在 java.util.regex.Pattern.error(Pattern.java:1713)
在 java.util.regex.Pattern.escape(Pattern.java:2177)
在 java.util.regex.Pattern.atom(Pattern.java: 1952)
在 java.util.regex.Pattern.sequence(Pattern.java:1834)
在 java.util.regex.Pattern.expr(Pattern.java:1752)
在 java.util.regex.Pattern.compile(Pattern.java :1460)
在 java.util.regex.Pattern.(Pattern.java:1133)
在 java.util.regex.Pattern.compile(Pattern.java:823)
在 java.util.regex.Pattern.matches(Pattern.java :928)
在 java.lang.String.matches(String.java:2091)
在 com.acc.directory.scanner.SDScanner.main(SDScanner.java:309)

我尝试替换\\b为,\\\\b 但没有用。它返回假。谁能帮我解决这个问题。我到处搜索,但只给了我一个可以替换\\b的答案,\\\\b但它对我不起作用。

PS。这只是一个显示我尝试过的内容和我想要的输出的虚拟示例。我用真实数据运行我的代码,错误来自该输出。

4

2 回答 2

0

如果我替换varpara修复第 3 行中的引号,则matches()返回 true:

@Test
public void testName() throws Exception
{
    String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,";
    String keyword = "Hell";
    boolean matches = para.matches(".*\\b"+keyword+"\\b.*");
    logger.debug(matches); 
}

输出:

08:52:18.059 [main] temp.temp - true
于 2015-07-20T06:54:55.397 回答
0

您需要对para变量应用匹配函数,并且您忘记"在第二个之前放置\\b

String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,";
String keyword = "Hell";
boolean matches = para.matches(".*\\b"+keyword+"\\b.*");
                                               ^
System.out.println(matches);
于 2015-07-20T06:46:24.270 回答