0

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

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

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

2 回答 2

1

它工作正常。& 符号被替换,因为您将它排除在允许的字符之外。

于 2012-10-16T18:24:38.140 回答
1

我必须道歉。我发誓我试过它没有逃脱和逃脱,但它似乎不起作用。冷冻豌豆的罗迪让我再次尝试,神奇的是,现在剧本做了它应该做的事情。

感谢评论者,

-解决了!

工作代码:

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(" "));
于 2012-10-16T18:31:02.663 回答