我搜索了几个可能提供我需要的答案的帖子,但我找不到答案。
我想知道为什么这个正则表达式:
Pattern.compile("[^\\w\\s\\d\\&]")
无法正常使用String:
"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(" "));
答案 0 :(得分:1)
它运作正常。 &符号被替换,因为您将其从允许的字符中排除。
答案 1 :(得分:1)
我必须道歉。我发誓,我试过它没有转义并逃脱,似乎不起作用。冷冻豆豆的罗迪让我再一次尝试,而且现在魔术师已经做了它应该做的事情。
感谢评论者,
-solved!
工作代码:
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(" "));