我正在尝试使用正则表达式匹配两个标记之间的字符串。一个标签有一个随机生成的数字,因此我无法找到一种方法来匹配两个标签之间的字符串。
所以我的html中有很少的字符串,每个字符串都有不同的名称。 您看到的数字是随机生成的。我试图获取每个字符串的名称
<a href="log.jsp?type=Agent&agentIDStr=26444">Amber</a></td>
正在使用的正则表达式
<a href="log\.jsp\?type=Agent&agentIDStr=.\d.+">(.*)</a>
遗憾的是,这与整个字符串匹配,而不仅仅是标记之间的名称。帮助赞赏 - 不是正则表达的忠实粉丝; /
答案 0 :(得分:1)
我建议你改变你的正则表达式,如下所示。 \d+
匹配一个或多个数字,(.*?)
非贪婪地捕获零个或多个字符。
<a href="log\.jsp\?type=Agent&agentIDStr=\d+">(.*?)</a>
答案 1 :(得分:1)
尝试简单的延迟加载,你的写入轨道,但显示一点贪婪,哈哈,所以尝试延迟加载。像这样
<a href="log\.jsp\?type=Agent&agentIDStr=26444">(.*?)<\/a><\/td>
N.B: .*?
匹配任何字符(换行符除外)
Quantifier: *? Between zero and unlimited times, as few times as possible, expanding as needed [lazy]
答案 2 :(得分:0)
如果你使用PHP,最好不要使用正则表达式来捕获它:
$url = '<a href="log.jsp?type=Agent&agentIDStr=26444">Amber</a></td>';
$dom = new DOMDocument;
@$dom->loadHTML($url);
$link = $dom->getElementsByTagName('a')->item(0);
parse_str(parse_url($link->getAttribute('href'), PHP_URL_QUERY), $variables);
var_dump($variables); // ['type' => 'Agent', 'agentIDStr' => '26444']
var_dump($link->nodeValue); // Amber