在正则表达式中,'\w'表示匹配单个单词字符(英文、数字、下划线)。
在匹配方法matches()中,定位到正则表达式有'\' 和'w'两个字符连着时,就去判断字符串当前位置元素是否==单词元素。
编译时能够识别的转义字符中没有'\w',它没办法在编译结束生成执行代码时转为对应的ASCII码值,会编译报错。它不是可以转成ASCII码的转义字符,而是会被当成两个字符'\'和'w',而'\'又没有对应的ASCII码值,转义字符'\\'(代表'\')才有对应的ASCII码值,所以会报错。
java规定好的转义字符就这几种:
要表示这些意义,就必须使用对应的转义字符。
所以正则表达式中'\w'是需要把'\'和'w'当成两个字符都编译成对应的ASCII码:'w'不用转义,对应的ASCII码是119,而'\'没有对应的ASCII码,需要用转义字符'\\'来代表它,对应的ASCII码值是92。因此就应该写成"\\w"