你好我得到了一些html,我尝试使用正则表达式来查找所有获得itemprop属性的HTML标记。
我想使用正则表达式,因为我不确定HTML的完整性。
我试过这个正则表达式。
<(?<balise>.+)>(?(balise).*itemprop=.*)
我想在我的小组中匹配一个模式,但它不起作用。
有人可以帮助我
文本解析示例
<meta itemprop="currency" content="CDN" >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
<head><span itemprop="name">My name</span>
我只需要提取html标签,然后获取itemprop
答案 0 :(得分:1)
正如评论中指出的那样,使用正则表达式解析html远非理想,你应该考虑使用适当的框架。
但是,如果坚持使用正则表达式,你可以尝试以下方式:
(?<=<)\s*([^\s>]+?)(?=\s[^>]*(?<=\s)itemprop="[^<]*?/?>)
查找由zero or more whitespace characters followed by one or more non whitespace and non > characters
组成的字符串,所述字符串必须以<
开头,后跟(按给定顺序):a whitespace
,zero or more non > characters
, itemprop=" preceded by a space
,zero or more non < characters
,optional /
,>
。
上述正则表达式无法确保标记的属性与'
和"
正确平衡,如果它包含非法字符/语法,也不会失败。它只会断言标签有一个开头,一个由多个空格组成的名称,一个itemprop属性以及标签是否已关闭。