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

如何用正则表达式匹配正负整数,排除连字符连接的数字?

正则匹配需求:匹配独立正负整数,排除连字符连接的数字

示例文本

From 2020-2022, the frequency of COVID-19 increased when the temperature fell between 10 and -10 degrees. (2)

期望匹配结果

需要匹配:10、-10、2
需排除:-2022、-19、2020(注:排除2020这类年份超出正则表达式能力范围,无法实现)

已尝试的正则及问题

  • \b-?\d+\b:会误匹配所有数字,因为-是非单词字符,连字符连接的数字也会被命中
  • \B-\d+\b:仅能匹配负数,无法匹配正整数
  • 数字可能出现在括号等符号中,不能仅用空格作为边界判断
  • (\B-|(?<!\w-)\b)\d+\b:理论可行,但所用正则引擎不支持负向后视语法

可行解决方案(无需负向后视)

使用以下正则表达式:

(\B-|(?:^|[^\w-])\b)\d+\b

正则解释

  • \B-:匹配非单词边界后的-,确保这个-不是连接符(比如2020-2022中的-前是数字,属于单词边界,不会被匹配)
  • (?:^|[^\w-])\b:匹配字符串开头,或非单词字符、非连字符后的单词边界,确保正整数的前面没有连字符或字母数字
  • \d+\b:匹配连续数字及后续的单词边界,避免数字后紧跟字母或连字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:03:23