我正在学习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
答案 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()
方法可以使用正则表达式作为分隔符进行拆分。