[英]java regex escape sequences
我想知道Java中的正则表达式,却偶然发现使用反斜杠。 例如,如果我想在文本中查找“ this regex”一词的出现,则可以执行以下操作:
Pattern.compile("this regex");
尽管如此,我也可以这样做:
Pattern.compile("this\\\\sregex");
我的问题是:两者之间有什么区别? 为什么我必须两次输入反斜杠,我的意思是,为什么Java中没有\\ s转义序列? 提前致谢!
\\s
表示任何空格字符,包括制表符,换行符和回车符。 \\
来转义特殊字符。 要将字符\\
放入字符串文字中,您需要编写"\\\\"
。 但是,正则表达式模式也将\\
用作转义符,并将其放入字符串文字的方式是使用两个,因为它要经历两个单独的转义过程。 例如,如果您从纯文本文件中读取正则表达式模式,则不需要两次转义。 需要两个反斜杠的原因是,当您在Java代码中输入一个正则表达式字符串时,实际上是在处理两个解析器:
Pattern.compile
时传递给regex解析之后,对其进行解释。 因此,当您输入"this\\\\sregex"
,它将由Java编译器转换为Java字符串"this\\sregex"
。 然后,当您使用字符串调用Pattern.compile
时,正则表达式编译器会将反斜杠解释为特殊字符。
区别在于\\ s表示空格字符,它可以不仅仅是空格。 它可以是制表符,换行符,换行符,仅举几例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.