为什么在这个正则表达式中没有被解释为黑色?

Bad*_*est 2 java regex

我正在学习使用Java的Pattern和Matcher,这是我书中的示例代码片段.它可以像作者描述的那样工作,但是我没有得到的是为什么\\.最终成为一个点而不是一个反斜杠(\\部分)和一个点(.部分).编译器是不是从左到右阅读?

import java.util.regex.*;
public class SplitTest {
   public static void main(String[] args)  {
       String input= "www.cs.cornell.edu";                          

      Pattern p = Pattern.compile("\\.");
      String pieces[] = p.split(input);
      for (int i=0; i<pieces.length; i++){
            System.out.println(pieces[i]);    
            }



   }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 6

它在解析字符串文字时被解释一次,而一次由正则表达式编译器解释.

"\\."- > "\."- string literal
"\."- > literal .- regex编译器

  • 这就是Java需要像其他语言一样支持Regex的原因,它不会使用引号而是使用`/\ ./`. (2认同)