请教:
在正则表达式中 为什么\\d要用双斜杠呢 有人说由于 \d 不是对d进行转义  而只是表示\d在正则表达式中就代表数字 所以就要用双斜杠 但如果是那样\d不也是对d进行了转义了吗

解决方案 »

  1.   

    如果el寫在java里面是不需要轉義的
    只有寫在js里面才需要轉義
      

  2.   

    d表示一个字母d
    \d表示数字
    而java中\是一个特殊字符,所以表示\d是\\d.
    其它的类似
      

  3.   

    首先得知道"\"在java中也是转义字符,
    java中的存在的转义序列值为 “\b、\t、\n、\f、\r、\"、\'、\\”
    java编译原理应该有说到吧
      

  4.   

    我是这样想的,正则表达式,它其实是一套可以独立出来的子系统,
    它是基于java的,
    如果你给它的只是“\\d”那么它得的只是“\d”
    也就像你在写java的时候new String("\d");这里编译一定会报错的,正则表达式应该也是这样的
      

  5.   


    \d 是正则表达式定义的规则,
    而“\”又是正则表达式里的特殊字符(转义字符)它不可以单独存在,
    就像在java里一样,如果你写 new String("\d");是编译不过去的,
    因为“\d”在java的转义序列(“\b、\t、\n、\f、\r、\"、\'、\\” )里没有,
    必须是“\\d”这样到编译器那里的时候它就是“\d”这样的了。
    而正则表达式呢,j
    ava给它的时候如果是 
    new Stirng().replaceAll(new String("\\d"),"ggg");
    假如编译后变成:
    new Stirng().replaceAll(“\d”,"ggg");
    那么正则表达式拿到的只“\d”等正则表达式再编译的时候一定会错的呀,
    正则表达式应该是可以独立用的吧,如果你还想知道那你就知道正则表达式是怎么实现的了.
    就像java是怎么编译的一样,呵呵