如何修改RegEx:匹配所有非空白字符且兼容普通空格?
好问题!我来帮你搞定这个正则调整的需求。你现在的[^\s]会匹配所有非空白字符,但它把你想保留的普通空格也一起排除了——毕竟\s包含了所有空白类型(空格、制表符、换行符、回车符等等)。要实现“匹配所有非空白字符 + 普通空格”的效果,有两种简洁的方案:
方案1:用正向字符集组合(最简洁)
直接把「非空白字符」和「普通空格」放进同一个字符集里:
[\S ]
\S是\s的反向匹配,也就是所有非空白字符- 加上普通空格
,整个字符集就会匹配:所有非空白字符 + 普通空格,自动排除其他空白类型(制表符、换行符等)
方案2:精确排除不需要的空白字符(更透明)
如果你想明确指定要排除哪些空白类型(避免依赖\S的隐含规则),可以直接把除了普通空格之外的空白字符列出来排除:
[^\t\n\r\f\v]
\t制表符、\n换行符、\r回车符、\f换页符、\v垂直制表符,这些是\s包含的除了普通空格之外的所有空白类型- 这个正则的意思是:匹配所有不是上述空白字符的内容,自然就包含了普通空格和非空白字符
测试示例
假设你有字符串:Hello World\t\nFoo\rBar
用上面任意一个正则匹配,都会选中:H e l l o W o r l d F o o B a r(跳过了\t、\n、\r这些你不需要的空白)
内容的提问来源于stack exchange,提问作者TheLovelySausage
相关产品推荐
相关产品推荐

