0

我需要一些正则表达式帮助,拜托。

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

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

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

我该如何解决?

谢谢,

科布斯

4

1 回答 1

1

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

你的模式看起来像: /\[\[mod:(.*?):(.*?)(?::(.*?))?(?::(.*?))?(?::(.*?))?\]\]/i

于 2012-12-21T09:50:45.107 回答