Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件正则表达式与PHP_Php_Regex - Fatal编程技术网

条件正则表达式与PHP

条件正则表达式与PHP,php,regex,Php,Regex,我需要一些正则表达式的帮助 我在PHP中使用了以下正则表达式: $module\u pattern=“/\[\[mod:(.*):(.*):(.*):(.*):(.*)\]\]/i” 它应该首先用一个模块(mod:)和这个特定模块替换这个正则表达式,然后用第二个特定函数替换这个特定模块。我尝试添加第三、第四和第五个:(.*),以允许向函数传递参数,但上面的正则表达式假设我们实际上将传递3个参数,但在某些情况下,我可能只传递一个或两个参数 我该如何解决这个问题 谢谢 Kobus您可以使用(…)?创

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

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

$module\u pattern=“/\[\[mod:(.*):(.*):(.*):(.*):(.*)\]\]/i”

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

我该如何解决这个问题

谢谢


Kobus

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

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

非常感谢你,帕特里克德夫。我真的在挠头想弄清楚正则表达式是如何工作的。它本身就是一种语言,似乎:-)出于某种原因,我的问题被标记为“不是真正的问题”,但我对你为我编写的正则表达式有一些问题。我想知道你能不能帮我再看一遍?对于第二个参数,它不能正常工作。你能帮忙吗?正则表达式的输出以某种方式将第三组和第四组合并为一组,即mod:browse:companys:2:1作为browse,companys,2:1,1?nevermind。我好像犯了复制粘贴错误。似乎现在起作用了。:-)如果有什么变化,我会通知你的。再次感谢!如果您试图操作一组以冒号分隔的字符串,请使用
分解
将字符串拆分,然后对其进行操作。谢谢Andy。也许这样更好。当我开始这项工作时,我不确定字符串可能会变得多么复杂,但现在您已经提到了,
explode
可能会100%正常工作。