Regex模式只捕获数字,但只捕获单行



此正则表达式模式将匹配15个连续数字,可选地穿插非数字:

d(?:D?d){14}(?!d)

以下是我的示例数据,显示了四个有效匹配:

Correct matches: #19-04-052-320-008-55,19 04 052 320 008 75,19/04/052/320/0/0/8/8/0, 190405232000895 

当多行之间有数字时,就会出现问题。我的正则表达式将匹配下面的多行字符串:

Incorrect match:
12
950,500
345
817,430
67

如何修改当前模式,使其在分布在多行上时不会匹配15个连续数字?

您可以使用以下正则表达式:

bd(?:[^nd]*d){14}(?!d)

RegEx演示

RegEx分解:

  • b:匹配单词边界,以便在单独的单词中匹配第一个匹配数字
  • [^nd]*:匹配0个或多个非数字且非换行符的字符
  • (?:[^nd]*d){14}:匹配14个数字,可选地穿插0个或多个非数字、非换行符

最新更新