首页 > 解决方案 > 正则表达式匹配除 0、1(11、12 等)以外的所有数字

问题描述

我需要捕获大于 1 的第一个主题标签之后的所有数字,但无法获取 10-19。表达式如下所示:randomstring#11#1#0

目前,我想出了:

^[^#\s]+#[^0-1]\d*#.+$

谁能指出我正确的方向?

标签: regex

解决方案


要匹配任何大于 1 且前面有哈希字符的数字,您可以使用 Lookbehind,如下所示:

(?<=#)(?:[1-9]\d+|[2-9])

演示

分解:

  • (?<=#)- 确保匹配以“#”开头的 Lookbehind。
  • (?:- 启动一个非捕获组。
    • [1-9]\d+- 匹配由两个或多个不以零开头的数字组成的任何数字。
    • |- 或者...
    • [2-9]- 匹配 2 到 9 之间的任何数字。
  • )关闭非捕获组。

如果不支持 Lookbehind,您可以使用:

#([1-9]\d+|[2-9])

..并且该数字将在第 1 组中。

演示


推荐阅读