Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java正则表达式转义序列_Java_Regex - Fatal编程技术网

java正则表达式转义序列

java正则表达式转义序列,java,regex,Java,Regex,我想知道Java中的正则表达式,偶然发现了反斜杠的用法。例如,如果我想查找文本中出现的单词“this regex”,我会这样做: Pattern.compile(“这个正则表达式”) 尽管如此,我也可以这样做: Pattern.compile(“this\\sregex”) 我的问题是:它们之间有什么区别?为什么我必须键入两次反斜杠,我的意思是,为什么在Java中不是转义序列?提前谢谢 区别在于\s表示空白字符,它可以不仅仅是一个空格。它可以是选项卡、换行符、换行符等等 区别在于\s表示空白字符

我想知道Java中的正则表达式,偶然发现了反斜杠的用法。例如,如果我想查找文本中出现的单词“this regex”,我会这样做:

Pattern.compile(“这个正则表达式”)

尽管如此,我也可以这样做:

Pattern.compile(“this\\sregex”)


我的问题是:它们之间有什么区别?为什么我必须键入两次反斜杠,我的意思是,为什么在Java中不是转义序列?提前谢谢

区别在于\s表示空白字符,它可以不仅仅是一个空格。它可以是选项卡、换行符、换行符等等

区别在于\s表示空白字符,它可以不仅仅是一个空格。它可以是选项卡、换行符、换行符等等

区别在于\s表示空白字符,它可以不仅仅是一个空格。它可以是选项卡、换行符、换行符等等

区别在于\s表示空白字符,它可以不仅仅是一个空格。它可以是选项卡、换行符、换行符等等

  • \s
    表示任何空白字符,包括制表符、换行符和回车符
  • Java字符串文字已使用
    \
    转义特殊字符。要将字符
    \
    放入字符串文字,您需要编写
    “\\\”
    。然而,正则表达式模式也使用
    \
    作为转义字符,将其转换为字符串文字的方法是使用两个,因为它经历两个单独的转义过程。例如,如果从纯文本文件读取正则表达式模式,则不需要双重转义
  • \s
    表示任何空白字符,包括制表符、换行符和回车符
  • Java字符串文字已使用
    \
    转义特殊字符。要将字符
    \
    放入字符串文字,您需要编写
    “\\\”
    。然而,正则表达式模式也使用
    \
    作为转义字符,将其转换为字符串文字的方法是使用两个,因为它经历两个单独的转义过程。例如,如果从纯文本文件读取正则表达式模式,则不需要双重转义
  • \s
    表示任何空白字符,包括制表符、换行符和回车符
  • Java字符串文字已使用
    \
    转义特殊字符。要将字符
    \
    放入字符串文字,您需要编写
    “\\\”
    。然而,正则表达式模式也使用
    \
    作为转义字符,将其转换为字符串文字的方法是使用两个,因为它经历两个单独的转义过程。例如,如果从纯文本文件读取正则表达式模式,则不需要双重转义
  • \s
    表示任何空白字符,包括制表符、换行符和回车符
  • Java字符串文字已使用
    \
    转义特殊字符。要将字符
    \
    放入字符串文字,您需要编写
    “\\\”
    。然而,正则表达式模式也使用
    \
    作为转义字符,将其转换为字符串文字的方法是使用两个,因为它经历两个单独的转义过程。例如,如果从纯文本文件读取正则表达式模式,则不需要双重转义

  • 需要两个反斜杠的原因是,在Java代码中输入正则表达式字符串时,实际上需要处理两个解析器:

    • 第一个是Java编译器,它将字符串文本转换为Java字符串
    • 第二个是正则表达式解析器,它在将正则表达式转换为Java字符串并在调用
      Pattern.compile
      时传递给正则表达式解析器之后,对正则表达式进行解释

    因此,当您输入
    “this\\sregex”
    时,Java编译器会将其转换为Java字符串
    “this\sregex”
    。然后,当您使用字符串调用
    Pattern.compile
    时,反斜杠将被正则表达式编译器解释为一个特殊字符。

    需要两个反斜杠的原因是,当您在Java代码中输入正则表达式字符串时,您实际上正在处理两个解析器:

    • 第一个是Java编译器,它将字符串文本转换为Java字符串
    • 第二个是正则表达式解析器,它在将正则表达式转换为Java字符串并在调用
      Pattern.compile
      时传递给正则表达式解析器之后,对正则表达式进行解释

    因此,当您输入
    “this\\sregex”
    时,Java编译器会将其转换为Java字符串
    “this\sregex”
    。然后,当您使用字符串调用
    Pattern.compile
    时,反斜杠将被正则表达式编译器解释为一个特殊字符。

    需要两个反斜杠的原因是,当您在Java代码中输入正则表达式字符串时,您实际上正在处理两个解析器:

    • 第一个是Java编译器,它将字符串文本转换为Java字符串
    • 第二个是正则表达式解析器,它在将正则表达式转换为Java字符串并在调用
      Pattern.compile
      时传递给正则表达式解析器之后,对正则表达式进行解释

    因此,当您输入
    “this\\sregex”
    时,Java编译器会将其转换为Java字符串
    “this\sregex”
    。然后,当您使用字符串调用
    Pattern.compile
    时,反斜杠将被正则表达式编译器解释为一个特殊字符。

    需要两个反斜杠的原因是,当您在Java代码中输入正则表达式字符串时,您实际上正在处理两个解析器:

    • 第一个是Java编译器,它将字符串文本转换为Java字符串
    • 第二个是正则表达式解析器,wh