求助:可提取@(含其后空格)后decimal number的regex实现
提取@后十进制数的Regex实现
可直接复用的正则表达式:
@\s*([+-]?\d+(?:\.\d+)?)
匹配逻辑拆解
@:匹配字面@符号,该字符在正则语法中无特殊语义,无需转义\s*:匹配@符号后任意数量的空白字符(支持0个、1个或多个空格、制表符),完全覆盖“@后附带空格”的场景要求- 括号
():定义捕获组,专门存储需要提取的小数内容,避免提取结果包含@符号和前置空白 [+-]?:可选匹配正负号,适配带符号的小数场景,若不需要匹配正负数值可直接删除该段\d+(?:\.\d+)?:匹配标准十进制数字结构:优先匹配至少1位数字作为整数部分,再可选匹配小数点+至少1位数字的小数部分,不会误匹配零散的小数点、无意义的孤立符号
效果验证
测试输入字符串:
hello I am a @ 23.43 string
执行匹配后读取第一捕获组内容,即可得到目标结果23.43
使用提示
- 注意:不要直接读取正则的完整匹配结果,完整匹配会包含@符号和前置空白字符,仅需提取第一捕获组的内容即可
- 如果需要避免匹配到和其他数字粘连的场景,可在捕获组前增加单词边界
\b,调整为@\s*\b([+-]?\d+(?:\.\d+)?),提升匹配精准度
内容的提问来源于stack exchange,提问作者MomasVII
相关产品推荐
相关产品推荐

