尽可能晚地查找正则表达式模式的出现
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
。
我正在尝试从如下字符串中提取信息:"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
。