在 PCRE 中捕获未知重复的模式

Rya*_*yan 3 php regex

对于有经验的正则表达式主义者来说,这可能是一个快速的问题,但我无法正确执行我的匹配。

假设我有一个看起来像这样的字符串:

http://aaa-bbbb-cc-ddddd-eee-.sub.dom
Run Code Online (Sandbox Code Playgroud)

我想捕获所有的“aaa”、“bbbb”、“cc”和“ddddd”子字符串,但我不确定会有多少(例如,通过“zzz”将所有三元组向上) .

这是我现在尝试使用的正则表达式:

/http:\/\/(\w*?\-)+\.sub\.dom/
Run Code Online (Sandbox Code Playgroud)

我这样写是因为:

  1. 我想匹配子字符串,但我希望每个都在解析 - 时终止
  2. 我想捕获这些子字符串中的一个或多个

但它似乎只保存它所做的最后一次匹配(在上述情况下,它只会匹配“eee-”。

有没有一种好方法来捕获所有匹配的子字符串?

更多信息:我正在使用 PHP 的 PCRE 函数preg_replace_callback。谢谢!

Jer*_*ein 5

不,不可能匹配未知数量的捕获组。

如果您尝试重复捕获组,它将始终包含最后捕获的值。

你能更广泛地解释一下你想要做什么吗?也许有另一种简单的方法来做到这一点(可能没有正则表达式)。