正则表达式全局捕获以关键字开头的组

时间:2019-04-26 02:36:05

标签: regex pcre

有很多捕获单词的示例(如果未在某些关键字之前)。我试图捕获括号内的所有数字组,但前提是它前面带有“未分配”字样

Job is not allocated to your organization (83) vs (1098), please contact support

这是主题行。我想同时捕获“ 83”和“ 1098”,但前提是在任何捕获组之前都出现“未分配”字样。

A想在后面使用回溯功能?后退和捕获组之间不能使用量词:-

(?<=not allocated)?\((\d+)\)

非常感谢您的协助。表达式必须与PCRE(PHP)兼容。

1 个答案:

答案 0 :(得分:0)

在模式的开头,匹配not allocated,或者将上一个匹配的结尾与\G匹配。您还可以通过使用\K并让)提前将完全匹配作为匹配的数字子字符串,从而使捕获组不再需要:

(?:(?!^)\G|not allocated).*?\(\K\d+(?=\))

https://regex101.com/r/DboPrU/2

需要对^进行否定的前瞻,以确保\G也与字符串的开头不匹配。