如何匹配不以$开头的小数?负向环视匹配异常问题求助
匹配不带$符号的独立小数
你遇到的问题是原正则(?<!\$)\d+\.\d+会误匹配带$价格的后半部分(比如$40.00里的0.00),因为它只检查了当前匹配起始位的前一个字符不是$,但没排除前一个字符是数字的情况。
解决办法可以用以下两种正则:
方案一:单词边界+负向环视
\b(?<!\$)\d+\.\d+\b
\b是单词边界,确保匹配的是完整的小数(不会是长数字的片段)(?<!\$)确保小数开头的位置前面没有$符号- 在示例字符串
$40.00 72.00 $6中,只会精准匹配72.00
方案二:双重负向环视
(?<!\$)(?<!\d)\d+\.\d+(?!\d)
(?<!\$)排除前面是$的情况(?<!\d)排除前面是数字的情况,避免误匹配带$价格的后半段(?!\d)可选,确保小数后面也不是数字,进一步保证匹配的是独立小数
内容的提问来源于stack exchange,提问作者chhenning
相关产品推荐
相关产品推荐

