一个或两个数字的正则表达式模式不属于 4 数字组

Regex pattern for one or two numbers not part of a 4 number group

我正在尝试编写一个将在 Data Studio 报告(使用 RE2)中使用的正则表达式模式来提取 1 到 13 之间的第一个数字。

这是我想要的示例:

8X/CS2 = 8
Experiment = no match
7Y/CS3 = 7 
7Y/CS2 = 7
2019-10T/Tk1 = 10
2019-7x/Pe4 = 7
2019-8x/Pe4 = 8
2019-12E/Tk-II = 12
2019-12D/Ps-4 = 12

我已经确定 ([1-9]|1[0123]) 会提取数字。

RE2 不支持负面回溯,所以我不能使用它。

以下正则表达式似乎有效:

(?:^|\D)(1[0123]|[1-9])(?:\D|$)

号码本身将在第一个捕获组中可用。

Demo

这里是对模式的解释:

(?:^|\D)         match either start of string or non digit character
(1[0123]|[1-9])  match 1-13
(?:\D|$)         match either end of string or non digit character

这个想法是匹配 1-13 ,它被定义为非数字的东西被两侧的边界包围。请注意,使用环顾四周,我们可以更轻松地编写:

(?<!\d)(1[0123]|[1-9])(?!\d)

但是,由于您的正则表达式风格不支持此功能,我们必须使用其他方式。