gpt4 book ai didi

javascript - 仅当不存在嵌套标签时如何获取 之间的内容?

转载 作者:行者123 更新时间:2023-11-28 14:54:07 30 4
gpt4 key购买 nike

我意识到在某些东西之间获取某些东西存在很多问题,甚至是特定的 HTML 标签。但我的要求有所不同,因为我不想忽略 <td></td>内容(如果存在嵌套标签)。如果仍然存在重复项,请标记此项并指出我指向那个项。

示例输入:<td><p>column1</p></td><td>column2</td>
预期输出:column2(太棒了!)或>column2<

根据this我尝试过的问题<td>(.*?)<\/td>并获得 2 场比赛:

<td><p>column1</p></td>
<td>column2</td>

根据标记的答案,我尝试了 >[^<]*<并得到这个:

enter image description here

很接近了。我可以接受 > 和 < 但我希望正则表达式忽略第一个 <td>因为它有<p>嵌套在其中。

假设:<p>在嵌套的情况下将始终是最里面的标签。如果输入是<td><p>column1</p>postfix</td> ,忽略这样的<td> .

最佳答案

您不应使用正则表达式来解析 HTML,因为 HTML 不是正则语言。这是too complex to be parsed by regular expressions .

你可以做的是使用浏览器内置的解析器,然后使用 DOM 方法来得到你想要的。

var s = '<td><p>column1</p></td><td>column2</td>'
var content = [];

// Create a row to insert the markup into
var tr = document.createElement('tr');
tr.innerHTML = s;

// Get the cells
var tds = tr.cells;

// If a cell doesn't have any element content, put its
// textContent into array
for (var i=0, iLen = tds.length; i<iLen; i++) {
if (tds[i].children.length == 0) {
content.push(tds[i].textContent);
}
}

console.log(content);

关于javascript - 仅当不存在嵌套标签时如何获取 <td></td> 之间的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43513460/

30 4 0