尽可能晚地查找正则表达式模式的出现

Find regex pattern occurence as late as possible

我正在尝试从如下字符串中提取信息:"Hello test 1 23 45 678 901 234 C test test2"

我要提取23 45 678 901 234 C

我能想到的最好的正则表达式是 (\d\s?){13}C?(C 和空格是可选的)

但是,该正则表达式提取的是 1 23 45 678 901 23 而不是我想要的模式。 我知道正则表达式从左到右扫描字符串,这解释了这种行为......有什么方法可以提取这些信息吗?

提前致谢。

我建议

\d(?:\s?\d){13,}(?:\s?C)?

参见regex demo

详情

  • \d - 一个数字
  • (?:\s?\d){13,} - 出现三次或更多次可选空格,然后是数字
  • (?:\s?C)? - 一个可选的空格,然后是一个 C.

您可以选择您想要的阈值,例如{13,14} 或只是 {14},如果 C 是必需的,则需要删除最后的 (?:)? 并使用 \d(?:\s?\d){13,}\s?C