为什么我的Regex只给我一个组?

问题描述 投票:-1回答:1

我目前对我创建的正则表达式有疑问。正则表达式必须提取在Hello和Regards之间显示数字####的所有组。目前,我的正则表达式仅提取一个组,而我需要内部的所有组,在这种情况下,我有2个,但是内部可能还有更多。

Regex Image

我正在使用网页https://regex101.com/

Flavor:PCRE(PHP)

RegexHello\s.*(number\s*[\d]*)\s.*Regards

文本

这是我的测试文本编号25120

你好,我的名字正在测试

我20岁

[请提供正则表达式编号1542帮助我

我多次尝试创建正则表达式,这是我的号码5152

问候

我仍在尝试尝试5150

结果:我的结果只是组号5152,而内部是另一个组号1542。

regex pcre regex-group
1个回答
0
投票

您可以使用

(?si)(?:\G(?!\A)|Hello\b)(?:(?!Hello).)*?\K\bnumber\s*\d+(?=.*?Regards)

请参见regex demo

© www.soinside.com 2019 - 2024. All rights reserved.