我需要提取 html 代码中非 A 标签的内容应该怎么写?也就是所有">"和"<"之间的内容,但是跳过<a...>之间的内容
<div>123<a href="#" title="abc" target="_blank">456</a>789<br/>hello</div>
比如上面这段 HTML,除了 A 标签之间的"456"不提取,其他的"123"、"789"、"hello"都提取出来
1
wangchonglie 2018-08-16 08:59:56 +08:00
我提供一个方法,第一步先将<a>xx</a>的字段找出来,然后替换掉为一个新的标签,最后再匹配>(.*?)<中的内容就可以提取到你想要的内容了。抛砖引玉,期待别人更好的回答。
|
2
yangg 2018-08-16 09:19:02 +08:00
什么语言,最好直接用 bs, pyquery 或者 cheerio 之类的
|
3
JmmBite 2018-08-16 09:34:43 +08:00 3
`([^<>]+?)<(?!\/a)`
|
4
IssacTomatoTan 2018-08-16 09:34:45 +08:00 via Android
/[^>]+(?=<\/a>)/
|
5
des 2018-08-16 09:42:52 +08:00 via Android
后排说一句,HTML 很有可能碰到不标准的,不建议用正则来匹配
|
6
rabbbit 2018-08-16 09:47:54 +08:00
先把<a></a>去掉再匹配,因为 a 标签里可能有别的东西,例如
<p>DIV<a>AAA<b>BBB</b>CCC</a>DIV</p> |
7
aqtata OP 感谢各位大佬相助,已经解决。其实匹配所有标签也行,程序中判断一下就可以。如果完全靠正则可以用 3 楼朋友的,测试可行。
|
8
zhaogaz 2018-08-16 10:09:02 +08:00
印象中 应该是要用 零宽断言 用不用贪婪 需要看你匹配到哪个 </a>了
|