我认为自己对正则表达式非常好,但是这个看起来非常棘手:我想修剪所有空白,除了空格字符:{{ 1}}。
在Java中,我尝试过的RegEx是' '
,但是这个也删除了[\s-[ ]]
。
更新
以下是我尝试从中删除空格的特定字符串:
project team manage key
注意:它将是“团队”和“管理”之间的字符。在编辑此帖子时它们显示为长空格,但在视图模式下视为单个空格。
答案 0 :(得分:22)
尝试使用此正则表达式:
[^\S ]+
由于双重否定,阅读有点令人困惑。正则表达式[\S ]
匹配您要保留的字符,即空格或任何不是空格的字符。因此,否定的字符类[^\S ]
必须匹配您要删除的所有字符。
答案 1 :(得分:7)
使用Guava CharMatcher:
String text = ...
String stripped = CharMatcher.WHITESPACE.and(CharMatcher.isNot(' '))
.removeFrom(text);
如果您实际上只想从字符串的开头和结尾剪掉(例如String.trim()
),则使用trimFrom
而不是removeFrom
。
答案 2 :(得分:3)
Java中没有字符类的减法,否则你可以使用[\s--[ ]]
,注意双破折号。您总是可以使用与补数的交集来模拟集合减法,所以
[\s&&[^ ]]
应该有效。从第一个答案开始,它并不比[^\S ]+
好,但原则是不同的,知道两者都是好的。
答案 3 :(得分:0)
我用这个解决了它:
anyString.replace(/[\f\t\n\v\r]*/g, '');
它只是所有可能的空格字符(不包括空格)的集合(因此实际上 \ s(无空格)。它包括制表符,回车符,换行符,垂直制表符和换页符。