在java中使用split()和contains()之间的正则表达式有什么区别

时间:2015-03-26 22:42:33

标签: java regex

我正在学习Java中的正则表达式。在我做了一些阅读后,我认为|是正则表达式中的一个特殊字符,但是当我尝试应用这两个函数时,我发现我可以直接在contains函数中使用|,它应该采用格式分裂函数中的\\|。那么应用正则表达式中这两个函数有什么不同吗?

String c = "come|dra";
Pattern regex = Pattern.compile("|");
Matcher matcher = regex.matcher(c);

System.out.println(matcher.find()+" "+c.contains("|"));
String [] s1 = c.split("|");
System.out.println(s1[1]);

输出:

true true
c

2 个答案:

答案 0 :(得分:3)

请注意您正在呼叫的方法。在您的示例代码中,您正在调用不使用正则表达式的String.contains()

  

当且仅当此字符串包含指定的char值序列时,才返回true。

String的某些方法 - 即String.matches()String.replaceAll()String.replaceFirst()String.split() - 是正则表达式行为的方便包装{{3}提供。例如,String.split()只是*调用:

return Pattern.compile(regex).split(this, limit);

*它实际上尝试在到达此行之前进行一些优化,但在一般情况下,这就是它的作用。

答案 1 :(得分:1)

#String.contains() 方法仅适用于“字符串”。它不适用于正则表达式,而 #String.split() 方法可以使用正则表达式作为分隔符进行拆分。