PHP 用于在难看的字符串中查找标记的正则表达式

PHP regex for finding token in ugly string

假设我有这个难看的字符串:

$uglyString = 'thing.header.setLoadBaseData(true);</script><script type=\'text/javascript\'>window.preload={"serverVersion":"20161019","locale":"en_US","token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943","valid":43200000},"accounts":[{"id":"55153549","datasetId":"a55153549w0p0","s4id":"FU\/llMk3qzAP6ClSIHqMU73huAo=","name":"Ga abd Gub","isPremium":false,"starred":false,"totalNumberOfProfiles":1,"wprops":[{"id":"88276407","datasetId":"a55153549w88276407p0","s4id":"T1xfVTHwcwLUwkUSlzEfZrRYL3E=","name":"GrubHub Preview","number":1,"configuredForAppData":false,"configuredForWebData":true,"isPr';

从上面的字符串中,我需要使用 PHP 提取值 aAdcDqpeWcaJzmmWeH9ElQ:1477340771943

它位于 token 旁边。令牌将始终显示为 "token":{"value":"aAdcDqpeWcaJzmmWeH9ElQ:1477340771943"

这是我的,但它不起作用

preg_match('/(?<=token":{"value":)(.*)(?=.*)/', $uglyString, $matches);

使用不变的东西并捕捉会发生变化的东西:

preg_match('/"token":{"value":"([^"]+)"/', $uglyString, $matches);
echo $matches[1];

所以匹配所有常量直到 ",然后捕获所有不是 " 的东西直到最后的 "