php preg_match没有返回预期的结果

时间:2015-02-24 16:13:12

标签: php regex preg-match

我有这个

$str = '"javascript:OpenWindow("order.aspx?order_id=161FA084AEF13FD7")"';
preg_match('/order\.aspx\?order_id=(.*\"\))/', $str, $a);
print_r($a);

输出预期:

161FA084AEF13FD7

但是

161FA084AEF13FD7")

请改善这个..

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

preg_match('/order\.aspx\?order_id=([^")]+)/', $str, $a);

[^")]+是基于否定的正则表达式,匹配文本,直到找到" OR ),因此在")之前匹配标识符而不实际捕获它。

答案 1 :(得分:1)

作为另一种解决方案,您只需要移动结束捕获括号,因此它不包括引号和右括号字符。

如同,请使用:

/order\.aspx\?order_id=(.*)\"\)/
                          ^
                          |
                   move this over here