我真的想要一个在node.js中可执行的正则表达式(所以没有jQuery DOM处理等,因为标签可以有不同的嵌套),它匹配所有非HTML标签或部分文本的文本它成为一个单独的群体。
E.g。我想匹配“5”,“ELT。”,“SPR”,“”,“plo”,“Unterricht”,“”,“& nbsp”和“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>
我可以确保标签中没有“&gt;”。
我找到的解决方案是(?<=^|>)[^><]+?(?=<|$)
,但这在node.js中不起作用(可能是因为前瞻了?它说“无效组”)
有什么建议吗? (是的,我真的认为Regex是正确的方法,因为html可能以其他方式嵌套而且内容总是具有相同的顺序,因为它是一个表)
答案 0 :(得分:3)
试试'yourhtml'.replace(/(&lt; [^&gt;] *&gt;)/ g,'')
'<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>'.replace(/(<[^>]*>)/g,' ')
它会给出一个你想要匹配的空格分隔文本(可以在空格上分割)。
答案 1 :(得分:2)
也许您可以直接使用标签进行拆分:
html.split(/<.*?>/)
之后你必须从结果中删除空字符串。