我正在尝试使用正则表达式解析html字符串。
完整的html加载到字符串变量中,我知道元素的id。如何获取该特定元素的名称
以下示例中的 ID为field-options-Real-fc
,预期结果为f4186d62184e277e2968ece68da25a860
任何人都可以帮助我使用正则表达式来匹配名称吗?
value属性也是唯一的,html格式保持不变。
<li class="field-choice field-choice-radio ">
<input type="checkbox" data-disable-children="true" data-validation-count="1..6" data-validation-count-message="Must specify within 1 and 6 items."
name="f4186d62184e277e2968ece68da25a860"
value="131233102"
id="field-options-Real-fc" class=""/>
<label for="field-options-Real-fc">
<span>Real FC</span>
</label>
</li>
答案 0 :(得分:1)
使用像BeautifulSoup(python)
这样的XML解析器会更好import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(your_html_string)
elem = soup.find(id="field-options-Real-fc")
name = elem['name']
答案 1 :(得分:0)
我可能会在这里感到困惑 - 但你可以在不使用正则表达式的情况下找到name属性。 尝试此流程以检索name属性的值:
var element = document.getElementById("field-options-Real-fc");
element.getAttribute("name");
这就是你追求的目标吗?
答案 2 :(得分:0)
您可以使用正向前瞻来查找ID,然后使用捕获组($1
)来提取ID本身,在下一个双引号处终止该组。
(?=id=")id="(.*)"\s
修改:这仍适用于您的latest revision。
答案 3 :(得分:0)
要涵盖所有(两个)可能的订单或者attrs,请使用lookahead:
/\<(?=(?:[^>]|"[^"]*")*id="field-options-Real-fc")(?:[^>]|"[^"]*")*name="([^"]*)"/
此处需要 (?:[^>]|"[^"]*")
以禁止&#39;&gt;&#39;字符除非引用。