【发布时间】:2015-07-20 06:44:42
【问题描述】:
我想从一个段落中找出一个特定的词。我用边界来找到一个。考虑以下示例。
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。这只是一个显示我尝试过的内容和我想要的输出的虚拟示例。我用真实数据运行我的代码,错误来自该输出。
【问题讨论】:
-
看来你忘记了引用:
boolean matches = var.matches(".*\\b"+keyword+"\\b.*"); -
请查看第 3 行的引号。
var是什么? -
对不起,我在发布问题时犯了错误。但在我的代码中,这些东西是正确的。请指导我使用边界。
-
您的异常消息与给定的代码不匹配。请提供SSCCE sscce.org
-
这只是一个例子来展示我想要做什么。我有必须在 unix 服务器上运行的复杂数据。我收到了这种错误。所以我想知道如何解决它
标签: java regex string word-boundary