正则表达式字符集[^ \\ w \\ d \\ s \\&]不起作用

时间:2012-10-16 18:22:16

标签: java regex

我搜索了几个可能提供我需要的答案的帖子,但我找不到答案。

我想知道为什么这个正则表达式:

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(" "));

2 个答案:

答案 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(" "));