我正在尝试使用正则表达式从一段文本中的特定行捕获一系列数字。在下面的简化示例中,我只是尝试在“活动电话线路”部分中捕获 4 位数字。我假设有未知数量的活动电话线,并且这些数字不能重复:
User Names: bob, jill, toni, tom
Active Phone Lines: 1010, 2020, 3030, 4040, 5050, 6060, 7070
Inactive Phone Lines: 1111, 2222, 3333, 4444, 5555
我知道我可以通过回车符/换行符拆分字符串并只使用正则表达式([0-9]{4})
,但我很好奇,想看看我是否可以只使用一个正则表达式。
到目前为止,我能够使用以下正则表达式获得所有我想要的东西:
(?<=Active Phone Lines: |, )([0-9]{4})(?=, |\rInactive Phone Lines:)
但这将捕获 2222、3333 和 4444 条“非活动电话线”。我知道我可以使用反向引用来引用以前捕获的组,但据我所知,我只能通过捕获的顺序来引用它们,而不仅仅是以前的捕获。看起来它只能在同一个表达式中工作,而不是通过搜索的多次迭代。
有没有办法反向引用以前捕获的组?假设$foo
会这样做,然后我可以使用以下正则表达式:
(?<=Active Phone Lines: |$foo, )([0-9]{4})(?=$foo, |\rInactive Phone Lines:)