正则表达式问题(我用\w替换[0-9a-zA-Z_]后编译不通过!!!!!!

时间:2022-02-21 21:18:47
public class EmailV1{
 public static void main(String[] args) {
  String emailIn="xxm00210xxm@163.com";  
  boolean check1=emailIn.matches("[0-9a-zA-Z_]+@[0-9a-zA-Z-]+[.]{1}[0-9a-zA-Z]+");
  System.out.println(check1);
  }
}
-----------------
编译正确!我用\w替换[0-9a-zA-Z_]后编译不通过
public class EmailV1{
 public static void main(String[] args) {
  String emailIn="xxm00210xxm@163.com";  
  boolean check1=emailIn.matches("\w+@[0-9a-zA-Z-]+[.]{1}[0-9a-zA-Z]+");
  System.out.println(check1);
  }
}


G:\My Documents\my项目\exercise\EmailV1.java:10: illegal escape character
  boolean check1=emailIn.matches("\w+@[0-9a-zA-Z-]+[.]{1}[0-9a-zA-Z]+");


我看javadoc上写的\w A word character: [a-zA-Z_0-9]  为什么我替换就不对呢???

7 个解决方案

#1


\\w

#2


\\w  第一个“\”起什么做用的???

#3


在java中使用正则表达式,必须使用连续的两个\\进行转义

#4


编译器读到一个"\"时,它就准备把紧跟的字符转义,而"\W"没有定义,所以就报错了.

"\\"被编译器翻译成一个"\",所以在执行时可以得到"\W".

以此类推,如果你要打印"abc\\be"的话,你需要写:
  System.out.println("abc\\\\be");

#5


字符转义,把\转换成\\

#6


楼上的说的都不错。

#7


在代码当中要写"\"就要写成"\\"第一个是相当于标点符号啦,第二个才是你需要的冬冬啦

#1


\\w

#2


\\w  第一个“\”起什么做用的???

#3


在java中使用正则表达式,必须使用连续的两个\\进行转义

#4


编译器读到一个"\"时,它就准备把紧跟的字符转义,而"\W"没有定义,所以就报错了.

"\\"被编译器翻译成一个"\",所以在执行时可以得到"\W".

以此类推,如果你要打印"abc\\be"的话,你需要写:
  System.out.println("abc\\\\be");

#5


字符转义,把\转换成\\

#6


楼上的说的都不错。

#7


在代码当中要写"\"就要写成"\\"第一个是相当于标点符号啦,第二个才是你需要的冬冬啦