我有一个正则表达式,它返回带有id="test"
例如:
<span id="test">Hello World</span>
<.*?id="pStyle".*?>(.*?)</.*?>
返回 Hello World
如果标签为空,它应该返回
<span id="test"></span>
如果标记为空,它应返回默认值。 我现在是regex的新手是否有任何正则表达式来驱逐这些空标签?
答案 0 :(得分:0)
可能在任何符号之后<.*?id="pStyle".*?>(.*?)</.*?>
您应该添加多个符号
<(.*)id="pStyle"(.*)>(.*)<\/ (.*)>
对我而言,它运作良好
答案 1 :(得分:0)
我假设你使用preg_match
函数。当匹配时,它总是返回一个字符串。如果要在标记为空时返回null,我认为您应该添加if
语句,例如
$string = '<span id="test">Hello World</span>';
$matches = array();
if (preg_match('%<.*?id="pStyle".*?>(.*?)</.*?>%', $string, $matches) {
if (empty($matches[1])) {
return null;
}
return $matches[1];
}
此外,我建议不要使用此结构:.*?
。如果我要写这个RegEx,我会这样做:
<[^>]*id="pStyle"[^>]*>([^<]*)</[^>]*>
[^>]*
表示:除>
以外的零个或多个字符。