有条件的正则表达式和PHP

时间:2012-12-21 09:45:26

标签: php regex

我需要一些正则表达式的帮助。

我在PHP中使用了以下正则表达式:

$module_pattern = "/\[\[mod:(.*?):(.*?):(.*?):(.*?):(.*?)\]\]/i";

它应该用模块(mod :)替换这个正则表达式,这个特定的模块首先是:(.*?),特定的函数是:(.*?)。我已经尝试添加第三个,第四个和第五个:(.*?)以便允许将参数传递给函数,但是上面的正则表达式假设我们实际上会传递3个参数,但在某些情况下我可能只传递一个或者二。

我该如何解决这个问题?

谢谢,

Kobus

1 个答案:

答案 0 :(得分:1)

您可以使用(...)?创建新的可选组。参数为(:(.*?))?。我使用嵌套组的原因是因为您不想捕获内容,因此我们可以向外部组添加?:,以便忽略它:(?::(.*?))?

您的模式如下: /\[\[mod:(.*?):(.*?)(?::(.*?))?(?::(.*?))?(?::(.*?))?\]\]/i