如何用Python正则匹配前后不含指定单词的数字?
正则匹配解决方案
给定字符串:"10.0 banana 30 apple 50 TOM 70 mango 100 peach 33 TOM 4.5",需要匹配前后未出现单词TOM的数字(即10.0、30、100),排除与TOM相邻的数字(50、70、33、4.5),可以使用以下正则表达式:
(?<!TOM\s+)\d+(?:\.\d+)?(?!\s+TOM)
正则拆解
(?<!TOM\s+):后行否定断言,确保当前数字的前面不是TOM加一个或多个空格,排除前面紧跟TOM的数字(比如70、4.5)\d+(?:\.\d+)?:匹配整数或小数形式的数字,支持如10.0这类带小数点的格式(?!\s+TOM):先行否定断言,确保当前数字的后面不是一个或多个空格加TOM,排除后面紧跟TOM的数字(比如50、33)
匹配验证
这个正则会精准命中目标数字:
- 匹配成功:10.0、30、100
- 匹配失败:50(后接TOM)、70(前接TOM)、33(后接TOM)、4.5(前接TOM)
内容的提问来源于stack exchange,提问作者R96R
相关产品推荐
相关产品推荐

