关于java中转意字符\\\\的用法探究

    先看thinking in java 4th中的一段话:

如果在其他语言中使用过正则表达式,那你就立刻能发现Java对反斜线\的不同处理.在其他语言中,\\表示"我想要在正则表达式中插入一个普通的(字面上的)反斜线,请不要给他任何特殊的意义."而在Java中,\\的意思是"我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义."例如,如果你想表示一位数字,那么正则表达式应该是\\d.如果你想插入一个普通的反斜线,则应该这样用\\\\.不过换行和制表符之类的东西只需使用单反斜线:\n\t.  
上面这段话该怎么理解呢?
1.在正则表达式里已经定义了  \d代表数字:[0-9];(这里要说明的是\d里的\是一个普通的\而非转义字符\,) 如果在正则表达式里要表达\d,那么只能用\\d,因为正则表达式是一个字符串类型的东西,如果直接用\d,那么这里\是一个转义字符,所以我们得先把\d中的\转移成普通的\,所以必须再加一个\,即\\d
2.如果你想插入一个普通的反斜线,则应该这样用\\\\,因为在正则表达式里已经定义了\\代表 反斜线字符,要注意的是这里的\\都是普通的\,而非转义字符,那么如果要想在正则表达式里匹配\,那么只能用\\\\,原因为同时进行了两次转义,由\\转义为\,所以最终为\\.
3.下面我们来看一段代码:
class Demo 
{
 public static void main(String[] args) 
 {
  System.out.println("a\\b".replaceAll("\","A"));//①
  System.out.println("a\\b".replaceAll("②
  System.out.println("a\\b".replaceAll("\\\","A"));//③
  System.out.println("a\\\\b".replaceAll("\\\\","A"));//④
     }
}
首先①:编译失败,因为在字符"\"中,转义字符把"给转移了,所以字符串没有了后面的",所以编译失败。
   ②:在字符串"\\"中,\\转义为普通\,但是普通的\在正则表达式中没有定义表达具体的意思。所以虽然编译正确,但运行错误。这也验证了thiking in java中的一段话:而在Java中,\\的意思是"我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义."例如,如果你想表示一位数字,那么正则表达式应该是\\d.如果你想插入一个普通的反斜线,则应该这样用\\\\.不过换行和制表符之类的东西只需使用单反斜线:\n\t.
   ③:和①情况类似。
   ④:编译运行都正确。

在此十分感激点击打开链接(http://ask.csdn.net/questions/258144)中little_how  的帮助。
 
欢迎大家对我的分析进行指证,仅供参考。
 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值