String haystack = "hey (( howdy";
haystack.matches(".*\\b\\Q((\\E\\b.*");
第2行应返回true,但返回false。这是Java中的错误,还是我做错了?
编辑:我想要实现的是查看haystack
答案 0 :(得分:2)
要做你想做的事,你只需要搜索用户输入。
public static void main(String[] args) {
String test = "some text (( other text inside a stack";
String userInput = "((";
Pattern p = Pattern.compile(".*" + Pattern.quote(userInput) + ".*");
Matcher m = p.matcher(test);
System.out.println(m.find());
}
问题是((
不是一个单词,因此在\b
打印:
true
注意:要适合可以兼容两者的程序。如果用户输入是单词,您可能会首先测试,如果是,则使用边界,如果不是上述解决方案。
答案 1 :(得分:0)
很可能它与'\ b'字边界匹配有关,因为它依赖于本文的实现:http://www.regular-expressions.info/wordboundaries.html
你试过了吗?
String haystack = "hey (( howdy";
haystack.matches(".*\\b \\Q((\\E \\b.*"));
注意\ b。
之前/之后的空格