我需要一些正则表达式的帮助。
我在PHP中使用了以下正则表达式:
$module_pattern = "/\[\[mod:(.*?):(.*?):(.*?):(.*?):(.*?)\]\]/i";
它应该用模块(mod :)替换这个正则表达式,这个特定的模块首先是:(.*?)
,特定的函数是:(.*?)
。我已经尝试添加第三个,第四个和第五个:(.*?)
以便允许将参数传递给函数,但是上面的正则表达式假设我们实际上会传递3个参数,但在某些情况下我可能只传递一个或者二。
我该如何解决这个问题?
谢谢,
Kobus
答案 0 :(得分:1)
您可以使用(...)?
创建新的可选组。参数为(:(.*?))?
。我使用嵌套组的原因是因为您不想捕获内容,因此我们可以向外部组添加?:
,以便忽略它:(?::(.*?))?
。
您的模式如下:
/\[\[mod:(.*?):(.*?)(?::(.*?))?(?::(.*?))?(?::(.*?))?\]\]/i