我搜索了几篇可能提供我需要的答案的帖子,但没有找到。
我想知道为什么这个正则表达式:
Pattern.compile("[^\\w\\s\\d\\&]")
不能在像这样的字符串上正常工作:
"AE&E randomstr§%%%ing b§)$§$/bla & some text"
结果将是(经测试):
"AE E randomstring blabla some text"
尽管我特意排除了&符号。之前的标记是否覆盖了它?谁能解释一下这背后的逻辑吗?
我的代码:
String str = "AE&E randomstr§%%%ing b45747bla & some text";
Pattern pattern = Pattern.compile("[^\\w\\s\\d\\&]");
Matcher matcher = pattern.matcher(str);
str = StringUtils.normalizeSpace(matcher.replaceAll(" "));
最佳答案
它工作正常。 由于您将 & 符号从允许的字符中排除,因此它被替换。
关于java - 正则表达式字符集 [^\\w\\d\\s\\&] 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921019/