replaceAll似乎与正则表达式无关

时间:2017-01-11 21:47:40

标签: java regex regex-negation

我想替换字符串中不是字母数字或不属于用户输入的特殊字符列表的所有字符。

String pagePath = "/content/geo/en/tool";
String specialCharacters = "\\:*?\"<>|#";
String fileName = pagePath.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}\\:*?\"<>|#]", replacer); //This works fine o/p: ~content~geo~en~tool

String test2 = "\"[^\\p{IsAlphabetic}^\\p{IsDigit}" + specialCharacters + "]\"";
String fileName2 = pagePath.replaceAll(test2, replacer);

由于某种原因,fileName2的值仍然是/ content / geo / en / tool

有人可以帮我解决出错的问题吗?

1 个答案:

答案 0 :(得分:3)

无需转义test2中的引号:

String test2 = "[^\\p{IsAlphabetic}^\\p{IsDigit}" + specialCharacters + "]";