PHP正则表达式应该贪婪

时间:2013-01-27 08:56:44

标签: php regex

我有一个可能非常大的提交类型输入按钮列表,其名称为delete0delete1delete2等等,我正在尝试使用{{1} }匹配preg_match数组中单击的按钮并删除附加的数字,所以我可以从mysql表中删除该数字。

问题是我的$_POST在看起来应该是贪婪的时候并不乖。例如,如果我使用按钮preg_match提交,我将获得delete13的匹配,delete1我获得delete23的匹配等。

以下是我的模式和逻辑:

delete2

2 个答案:

答案 0 :(得分:1)

小修:

/,?(delete)(\d+),?/

您正在捕获正在重复的模式:(\d)+,因此只有最后一次重复的子字符串应保留在捕获组中(单个数字)。 (\d+)将捕获子字符串,其中包含所有重复的数字。

作为进一步改进,第一个捕获组不是必需的:

/,?delete(\d)+,?/

因此,您可以使用delete

引用matches[1]之后的数字

答案 1 :(得分:1)

更改

$pattern = "/,?(delete)(\d)+,?/";

$pattern = "/,?(delete)(\d+),?/";