我正在尝试编写一个正则表达式模式,它将在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不支持负向回溯,所以我不能使用它。
发布于 2020-06-18 00:28:46
下面的正则表达式似乎起作用了:
(?:^|\D)(1[0123]|[1-9])(?:\D|$)号码本身将在第一个捕获组中可用。
以下是对该模式的解释:
(?:^|\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,它被两侧的边界包围,被定义为不是数字的东西。请注意,使用lookarounds,我们可以更容易地编写以下代码:
(?<!\d)(1[0123]|[1-9])(?!\d)但是,由于您的正则表达式不支持这一点,我们必须使用其他方法。
https://stackoverflow.com/questions/62433630
复制相似问题