【发布时间】:2015-05-22 12:53:01
【问题描述】:
我正在尝试查找所有字符,而不是字母(大写/小写)、数字和下划线,并将其删除。
stringA.replaceAll("[^a-zA-Z0-9_]","") // works perfectly fine
但是,以下代码甚至无法在 Java 中编译:
stringA.replaceAll("\W","");
// or also
stringA.replaceAll("[\W]","");
// or also
stringA.replaceAll("[\\W]","");
如果我只使用"\\W" 而不是"\W",那么上面的代码是正确的。
那么,\W、\\W 之间有什么区别,以及何时使用像 [^a-zA-Z0-9_] 这样的括号
【问题讨论】:
-
再次转义反斜杠。并且不要忘记在最后添加分号。
stringA.replaceAll("\\W",""); -
逃离逃脱者! \ 不仅是一个正则表达式转义字符,它也是一个 Java 转义字符!
标签: java regex string escaping