我想从一个段落中找到一个特定的单词。我用边界找到了一个。请考虑以下示例。
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 \湾
^
在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
,但它没有用。它返回false。
任何人都可以帮助我如何解决这个问题。我在所有地方都进行了搜索,但只给了我一个答案,用\\b
替换\\\\b
,但这对我不起作用。
PS。这只是一个虚拟的例子来展示我尝试过的东西以及我想要的输出。我用真实数据运行我的代码,错误来自该输出。
答案 0 :(得分: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);
答案 1 :(得分:0)
如果我将var
替换为para
并修正第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