繁体   English   中英

正则表达式使用HTML字符串中的ID获取名称

[英]Regular expression to get name using id from html string

我正在尝试使用正则表达式解析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>

最好使用XML解析器,例如BeautifulSoup(python)

import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(your_html_string)
elem = soup.find(id="field-options-Real-fc")
name = elem['name']

我在这里可能会感到困惑-但是您可以在不使用正则表达式的情况下找到name属性。 尝试以下流程来检索name属性的值:

var element = document.getElementById("field-options-Real-fc"); element.getAttribute("name");

那是你追求的吗?

您可以使用正向前行查找ID,然后使用捕获组( $1 )提取ID本身,并在下一个双引号处终止该组。

(?=id=")id="(.*)"\s

DEMO


编辑:这仍然适用于您的最新修订版

演示(版本4修订)

要涵盖所有(两个)可能的订单或属性,请提前使用:

/\<(?=(?:[^>]|"[^"]*")*id="field-options-Real-fc")(?:[^>]|"[^"]*")*name="([^"]*)"/

除非引用,否则此处需要(?:[^>]|"[^"]*")来禁止使用'>'字符。

https://regex101.com/r/aS4tDr/3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM