如何创建只匹配空格而不是字母的正则表达式?

时间:2013-11-17 00:10:48

标签: java regex

我有String但很长。

我需要删除所有非白色空格而不是所有字母:

我的模式是:

String content=readUrl();
content.replaceAll("(\\S)|(^\\[a-z])", "");

这不起作用。

为什么我的正则表达式取代了所有内容?

2 个答案:

答案 0 :(得分:4)

您可以使用否定的字符类:

(?i)[^\\sa-z]+

或更好,如果你想支持所有字母表:

[^\\s\\p{L}]+

答案 1 :(得分:0)

打破它:

content.replaceAll("(\\S)|(^\\[a-z])", "");

将替换与模式匹配的所有内容。 |表示如果匹配左侧的部分,则序列匹配该模式,匹配右侧的部分。左侧的模式(\\S)匹配每个不是空格的字符。所以非空白的每个字符都会匹配,并且会被淘汰。我认为右边的部分只会匹配,如果你的字符串实际上以五个字符[a-z]开头(因为你告诉它要按字面意思对待[),所以它实际上没有对结果的影响。但结果将是结果只是空白区域。