You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sed正则:如何在否定字符集内匹配任意数字?

在sed中用否定字符集匹配非数字的正确写法

sed不支持PCRE的\d语法,但完全不需要嵌套方括号来实现“匹配非数字”的否定字符集,以下是两种优雅且标准的写法:

方案1:用数字范围简写

^[^0-9]*[0-9]*

方案2:用POSIX字符类(兼容性更强)

^[^[:digit:]]*[[:digit:]]*

为什么你之前的写法无效?

你尝试的^[^[0-9]]*是错误的——正则里的字符集边界[]不需要嵌套,[^[0-9]]实际匹配的是**非[、非0-9、非]**的字符,完全偏离了“匹配非数字”的需求,所以才会失效。

对比你的“丑陋写法”

你写的[^0123456789]和[^0-9]效果完全一致,但[^0-9]是行业通用的简洁写法;如果需要匹配当前系统locale下的所有数字(比如多语言环境的数字字符),[^[:digit:]]的兼容性会更好。

内容的提问来源于stack exchange,提问作者user22996855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:52:03