Regex 使用正则表达式提取子字符串
我想从下面的字符串中提取Regex 使用正则表达式提取子字符串,regex,Regex,我想从下面的字符串中提取“t=“和”&“之间的字符串,但是”&2384'有时可能不存在。我尝试了以下方法,但得到的结果不是“123455asdfgh&2384”,而是“123455asdfgh”,我在这里做错了什么?谢谢你的帮助 $string="t=123455asdfgh&2384"; $match=array(); preg_match('/t=(.*)(&.*)?/', $string, $match); echo $match[1]; 注意:我需要使用常规exp…
“t=“
和”&“
之间的字符串,但是”&2384'
有时可能不存在。我尝试了以下方法,但得到的结果不是“123455asdfgh&2384”
,而是“123455asdfgh”
,我在这里做错了什么?谢谢你的帮助
$string="t=123455asdfgh&2384";
$match=array();
preg_match('/t=(.*)(&.*)?/', $string, $match);
echo $match[1];
注意:我需要使用常规exp…试试这个
preg_match('/t=([^&]*)(&.*)?/', $string, $match);
尝试使用非贪婪量词:
preg_match('/t=(.*?)(?=&|$)/', $string, $match);
问题是第一个
*
匹配字符串末尾的所有内容,这仍然是完全匹配的,因为后一个组是可选的。这更适合于,而不是正则表达式
parse_str( "t=123455asdfgh&2384", $params);
echo $params['t'];
这:
这就是
parse_str
的作用(解析查询字符串):
使用查找字符串中的起始点和结束点,然后提取它怎么样?不需要使用正则表达式。你想。@bingjie2680看看这个现场演示:它似乎完全按照你要求的方式工作。
123455asdfgh
$string="t=123455asdfgh&2384";
$args = array();
parse_str($string, $args);
echo $args['t']; // outputs '123455asdfgh'