我有String但很长。
我需要删除所有非白色空格而不是所有字母:
我的模式是:
String content=readUrl();
content.replaceAll("(\\S)|(^\\[a-z])", "");
这不起作用。
为什么我的正则表达式取代了所有内容?
答案 0 :(得分:4)
您可以使用否定的字符类:
(?i)[^\\sa-z]+
或更好,如果你想支持所有字母表:
[^\\s\\p{L}]+
答案 1 :(得分:0)
打破它:
content.replaceAll("(\\S)|(^\\[a-z])", "");
将替换与模式匹配的所有内容。 |
表示如果匹配左侧的部分,则序列匹配该模式,或匹配右侧的部分。左侧的模式(\\S)
匹配每个不是空格的字符。所以非空白的每个字符都会匹配,并且会被淘汰。我认为右边的部分只会匹配,如果你的字符串实际上以五个字符[a-z]
开头(因为你告诉它要按字面意思对待[
),所以它实际上没有对结果的影响。但结果将是结果只是空白区域。