java - 为什么\\在此正则表达式中不被解释为反斜杠?

标签 java regex

我正在学习使用 Java 的模式和匹配器,这是我书中的示例代码片段。它的工作原理正如作者所描述的那样,但我不明白为什么 \\. 最终成为一个点而不是反斜杠(\\部分)和点(. 部分)。编译器不是从左到右读取的吗?

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]);    
            }



   }
}

最佳答案

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

"\\." -> "\." - 字符串文字
"\." -> 文字 . - 正则表达式编译器

关于java - 为什么\\在此正则表达式中不被解释为反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640378/

相关文章:

regex - 非常复杂的正则表达式

java - 是否有可能有一个 'background' Facebook 应用程序?

java - 并发修改异常

java - libgdx动画 Sprite 没有方法错误

javascript - 如何在javascript中使用正则表达式选择不在双引号/单引号之间的数字

python - 如何将字符串中每个单词的第一个字符大写?

java - 将随机数更改为 key 代码

java - 在 java 中比较两个 ArrayLists 时出错

python - 使用正则表达式从 python 中的文本中仅提取百分比信息

mysql - 通过掩码(正则表达式)从 MySQL 中获取子字符串