【发布时间】:2021-01-12 17:39:33
【问题描述】:
我从一个看起来像这样的页面复制“多选”列表的 HTML: 然后将HTML版本(在线美化后)粘贴到notepad++页面中。
我知道想使用正则表达式来提取该列表中启用的行。换句话说,我想看看我从该下拉列表中选择了哪些选项。有很多行,滚动并找到它们是不可能的。因此,我认为最好的方法是使用该 HTML 并搜索包含“启用”的divs。然后,内部divs 应该具有我正在寻找的值。
HTML 如下所示:
<div class="ui-multiselect-option-row" data-value="1221221111">
<div class="ui-multiselect-checkbox-wrapper">
<div class="ui-multiselect-checkbox"></div>
</div>
<div class="ui-multiselect-option-row-text">(BASE) OneOneOne (4222512512)</div>
</div>
<div class="ui-multiselect-option-row ui-multiselect-option-row-selected" data-value="343333434334">
<div class="ui-multiselect-checkbox-wrapper">
<div class="ui-multiselect-checkbox"></div>
<div class="ui-multiselect-checkbox-selected">✔</div>
</div>
<div class="ui-multiselect-option-row-text">(BASE) TwoTwoTwo (5684641230)</div>
</div>
结果应仅返回以下值(基于上述): (基础) 二二二 (5684641230)
到目前为止,我已经尝试在 notepad++ 中使用以下正则表达式:
<div class="ui-multiselect-option-row ui-multiselect-option-row-selected"(.*?)(?=<div class="ui-multiselect-option-row")
但不可能同时标记所有行并删除未标记的行。 Notepad++ 只标记整个选择的第一行。所以,我在想是否有更好的方法——更复杂的正则表达式可以直接解析值。所以,在行中:
a) 我要么想用 notepad++ 中的另一个正则表达式行来完成上述工作(如果这样可以更快,我愿意使用 visualstudio)
b) 或者更简单的方法是使用 Chrome 中的控制台来解析选定的值。我仍然希望看到正则表达式解决方案,但对于 Chrome 控制台,我有一个
更新 1:
我用这条线$('div.ui-multiselect-option-row-selected > div:nth-child(2)')
由于我对 Chrome 控制台导出不太熟悉,所以我需要知道的只是从以下几行中获取 innerHTML:
更新 2:
for (var b in $('div.ui-multiselect-option-row-selected > div:nth-child(2)')){
console.log($('div.ui-multiselect-option-row-selected > div:nth-child(2)')[b].innerHTML);
哪个有效,我现在只需导出结果 }
【问题讨论】:
-
您是否考虑过使用实际的 html 解析器? Regex is not a tool for parsing HTML
-
我无法解析整个页面,因为它有太多元素。我只想关注那个特定的下拉菜单。我正在尝试查看是否可以使用 chrome 控制台获取选定的值。我知道上面提到的类的名称是什么,但我不熟悉过程。或者,我可以使用 Regex 选项。
-
是什么阻止了 html 解析器只解析您需要跟踪的元素?
-
你还需要显示具有
enabled的div 的样子。理想情况下,发布您需要跟踪的元素的最小但完整的示例。 -
父级
div包含'.ui-multiselect-option-row-selected',然后我想解析来自第二个子级div的文本。我认为 HTML 解析器会比使用控制台或 Regex 版本花费更长的时间?
标签: html kendo-ui css-selectors kendo-multiselect