我正在使用此正则表达式代码来获取标记,但不值:
(<input type="hidden" name="pt" id="pt" value=")|(" \/>)
从这段代码:
<input type="hidden" name="pt" id="pt" value="f64b1aadf7baa6e416dbfb6bf95fa031" />
但是我怎么能这样做呢?获取价值,但不是周围的标签?所以我只会得到“f64b1aadf7baa6e416dbfb6bf95fa031”(没有引号)。感谢。
答案 0 :(得分:3)
正如Donut所说,你真的不应该在HTML上使用正则表达式。但是,由于这是一个非常简单的案例,我将成为推动者。但严重的是,如果它变得更加复杂,请切换到DOM解析器。
value="(.+?)"
我假设您正在使用PHP,因此要将捕获的组取出,请执行以下操作:
preg_match('value="(.+?)"', $input, $groups);
echo "Value = " . $groups[1];
?
使其成为一个懒惰的运算符,因此它会占用第一个引号。如果引号内有引号转义的可能性,则需要添加:
value="(.+?[^\\])"
答案 1 :(得分:2)
虽然通常不建议尝试使用正则表达式解析HTML,但您可以尝试这样做:value="([^"]*)"
。