带有可选参数的PHP preg_match_all

带有可选参数的PHP preg_match_all,php,regex,Php,Regex,这个正则表达式问题超出了我对复杂搜索模式的理解: 模式: 搜索文本: <!--TAG(204700,CS)--> <!--TAG(204700,EN)--> <!--TAG(204700,CS,def)--> <!--TAG(204700,EN,rel)--> 该模式为我找到前两个链接,并将ID和语言缩写放入返回数组中。现在我需要调整模式,这样它会发现第三行和第四行a将第三个可选参数放入返回数组中。这是我无法理解的。谢谢你的帮助 您可以添加可选部

这个正则表达式问题超出了我对复杂搜索模式的理解: 模式:

搜索文本:

<!--TAG(204700,CS)-->
<!--TAG(204700,EN)-->
<!--TAG(204700,CS,def)-->
<!--TAG(204700,EN,rel)-->
该模式为我找到前两个链接,并将ID和语言缩写放入返回数组中。现在我需要调整模式,这样它会发现第三行和第四行a将第三个可选参数放入返回数组中。这是我无法理解的。谢谢你的帮助


您可以添加可选部件?:,\w+?匹配逗号并捕获组中的1+个单词字符:

此部分[^0-9\]\w*是一个求反字符类,它不匹配数字,也不匹配%

根据您的要求,您可以将其更改为[A-Z]或\w+

<!--TAG(204700,CS)-->
<!--TAG(204700,EN)-->
<!--TAG(204700,CS,def)-->
<!--TAG(204700,EN,rel)-->