使用正则表达式从HTML解析出内容?

使用正则表达式从HTML解析出内容?,html,regex,Html,Regex,如何使用regex查找div中具有特定样式的数据以外的所有内容?e、 g <div style="float:left;padding-left:10px; padding-right:10px"> <img src="../Style/BreadCrumbs/Divider.png"> </div> <div style="float:left; padding-top:5px;"> Data to keep </div&g

如何使用regex查找div中具有特定样式的数据以外的所有内容?e、 g

<div style="float:left;padding-left:10px; padding-right:10px">
    <img src="../Style/BreadCrumbs/Divider.png">
</div>
<div style="float:left; padding-top:5px;">
    Data to keep
</div>
<div style="float:left;padding-left:10px; padding-right:10px">
    <img src="../Style/BreadCrumbs/Divider.png">
</div>

要保存的数据
我希望正则表达式匹配除数据之外的所有内容。我能看到的最好的方法就是删除html标记,然后用vb组合文件(我已经有了vb的代码)


我使用regex是因为我需要从几百个文件中提取数据

您建议的方法可能不是这样做的好方法。如果:

  • 您可以访问
    grep
  • 您的grep版本支持perl兼容的正则表达式(
    PCRE
  • 这种样式的
    div
    只包装您的数据,不包装其他元素
  • “数据”
    div
    不包含其他
    div
    s
然后您可以使用:

(?s)<div style="float:left; padding-top:5px;">.*?</div>
对于这些:

  • -P
    激活
    PCRE
  • -z
    \n
    替换为
    NUL
    ,因此grep将整个文件视为一行
  • -o
    仅打印匹配的零件
在这之后,你需要脱掉潜水衣
sed
是一个很好的工具

sed 's|</\?div[^>]*>||g'
sed's |]*>g'
如果将所有文件放在一个目录中,则可以同时进行连接:

grep -Pzo $PATTERN *.html | sed 's|</\?div[^>]*>||g' > out.html
grep-Pzo$PATTERN*.html | sed的|]*>| | g'>out.html

为什么您认为正则表达式是正确的工具?请提供一些html进行解析。忽略所有你将听到的关于不使用正则表达式解析html的废话,它完全适用于简单的情况;)如果你能对div的内容做出强有力的假设,你可以提取它,但你需要在这里指定这些假设,并附上一个例子。RegEx有什么特别的味道吗?@sas欢迎使用SO!在这里表示感谢的一种常见方式是向上投票,然后单击复选标记(如果这是最佳答案)接受
grep -Pzo $PATTERN *.html | sed 's|</\?div[^>]*>||g' > out.html