我希望你能提供一个在node.js中可执行的正则表达式(不包括jQuery DOM处理等,因为标签可能有不同的嵌套),该表达式可以将所有不是HTML标签或其一部分的文本匹配成单独的组。
例如,我想从该字符串中匹配出“5”、“ELT.”、“SPR”、“ ”、“plo”、“Unterricht”、“ ”、“ ”和“plo”。
我可以保证标签内没有">"。
我找到的解决方案是
有什么建议吗?(是的,我真的认为正则表达式是正确的方法,因为HTML可能以不同的方式嵌套,并且内容始终具有相同的顺序,因为它是一个表格)
例如,我想从该字符串中匹配出“5”、“ELT.”、“SPR”、“ ”、“plo”、“Unterricht”、“ ”、“ ”和“plo”。
<tr class='list even'>
<td class="list" align="center" style="background-color: #FFFFFF" >
<span style="color: #010101">5</span>
</td>
<td class="list" align="center" style="background-color: #FFFFFF" >
<b><span style="color: #010101">ELT.</span></b>
</td>
<td class="list" align="center" style="background-color: #FFFFFF" >
<b><span style="color: #010101">SPR</span></b>
</td>
<td class="list" style="background-color: #FFFFFF" > </td>
<td class="list" align="center" style="background-color: #FFFFFF" >
<strike><span style="color: #010101">pio</span></strike>
</td>
<td class="list" align="center" style="background-color: #FFFFFF" >
<span style="color: #010101">Unterricht</span>
</td>
<td class="list" style="background-color: #FFFFFF" > </td>
<td class="list" style="background-color: #FFFFFF" > </td>
<td class="list" align="center" style="background-color: #FFFFFF" >
<b><span style="color: #010101">pio</span></b>
</td>
</tr>
我可以保证标签内没有">"。
我找到的解决方案是
(?<=^|>)[^><]+?(?=<|$)
,但在node.js中无法使用(可能是因为lookaheads?它说“无效组”)。有什么建议吗?(是的,我真的认为正则表达式是正确的方法,因为HTML可能以不同的方式嵌套,并且内容始终具有相同的顺序,因为它是一个表格)
(?:^|>)[^<>]+(?=<|$)
,然后对每个项目将^>
替换为空字符串 - 当然,要记住正则表达式并不保证是做到这一点的最佳方法,并且在输入不可预测时,您几乎肯定会在某些时候得到不正确的匹配。 - Peter Boughton