Discuss / Java / 练习和疑问

练习和疑问

Topic source

乞与追逐

#1 Created at ... [Delete] [Delete and Lock User]

String re = "\\d{3,4}\\-\\d{7,8}";

String re = "\\d{3,4}-\\d{7,8}";

这两种形式在运行的时候都能成功,不太明白为什么

还有一个疑问是

如果正则表达式有特殊字符,那就需要用\转义。例如,正则表达式a\&c,其中\&是用来匹配特殊字符&的,它能精确匹配字符串"a&c",但不能匹配"ac""a-c""a&&c"等。

要注意正则表达式在Java代码中也是一个字符串,所以,对于正则表达式a\&c来说,对应的Java字符串是"a\\&c",因为\也是Java字符串的转义字符,两个\\实际上表示的是一个\

 String re2 = "a\\&c"; // 对应的正则是a\&c

        System.out.println("a&c".matches(re2));//true

不太明白上面这个为什么是true,是指两个\\实质上是一个转义字符吗?(两个\\变成一个\,再结合\&匹配特殊字符&),但是两个\\不应该是一个符号'\'(无特殊意思)吗?

乞与追逐

#2 Created at ... [Delete] [Delete and Lock User]

这两个感觉类似,应该是一个问题哈~

The__Wolf

#3 Created at ... [Delete] [Delete and Lock User]

区分三个概念,原串,正则表达式,java字符串

原串是a&c,那么由于&在正则表达式中属于特殊字符,因此正则表达式中需要转义,即写为a\&c

又因为java字符串中,\也是特殊字符,因此需要转义写成\\,综合写就是a\\&c

所以java字符串"a\\&c"表示的正则表达式为"a\&c",表示的原串内容为"a&c"


  • 1

Reply