使用正则表达式从HTML文件中提取数据

时间:2014-01-29 14:48:17

标签: html regex notepad++

我试图使用正则表达式提取特定数据,但我无法实现我想要的,例如,

在此页面

  

http://mnemonicdictionary.com/wordlist/GREwordlist/startingwith/A

我必须只保留介于其间的数据,

<div class="row-fluid">

<br /> <br /><i class="icon-user"></i>

所以我在Notepad ++中复制了HTML代码,在replace中复制了正则表达式,并尝试替换匹配的所有内容,

.*<div class="row-fluid">

删除<div class="row-fluid">

之前的所有内容

但它根本不起作用。

有谁知道为什么?

P.S:我没有使用任何编程语言,我只需要使用Notepad ++在html代码上执行此操作,而不是在实际的HTML文件上。

3 个答案:

答案 0 :(得分:2)

我会在几个步骤中实现这一目标。

第1步。

将文档转换为一行。发现

 \r\n 

并且一无所获。 (确保在“替换”对话框中选择“扩展(\ n,\ r,..)”选项)

第2步。

找到

<div class="row-fluid">

并替换为

\r\n~<div class="row-fluid">

确保文档中未使用该字符“〜”。这个角色将帮助我们以后删除不必要的行

第3步。

查找

<br /> <br /><i class="icon-user"></i>

并替换为

<br /> <br /><i class="icon-user"></i>\r\n

第4步。

删除不必要的行。选中“正则表达式”。 找到

^[^~].+$\r\n

并且无需替换

第5步。

现在你只有以

开头的行
~<div class="row-fluid">

结束
<br /> <br /><i class="icon-user"></i>

你需要的一切只是删除这个标签

PS。如果需要多次执行相同的任务,可以尝试录制宏。

答案 1 :(得分:1)

您应该考虑使用Xpath进行检索。大多数语言都支持它。

当你选择一个名为xpather的页面项时,有一个很好的firefox插件可以推断出xpath表达式。

这里有一个黑客版本适用于较新的firefox版本

http://jassage.com/xpather-1.4.5b.xpi

要在Python中使用Xpath,请考虑使用http://xmlsoft.org/python.html

请注意,Xpath可能存在格式错误的html问题,因此您还可以找到一个有趣的选项来“清理”html并获取可解析的XML。

http://tidy.sourceforge.net/

答案 2 :(得分:0)

恕我直言,使用Notepad ++进行操作很困难。根据{{​​3}},您需要:

  • 删除所有行(因为正则表达式在每行文本上执行)
  • 在整个(1行)HTML上执行正则表达式

要么学习regexp,要么想要解析HTML。依赖于哪个,解决方案不同。

如果你想学习正则表达式,这是(再次恕我直言)要解决的错误问题。

如果要解决问题(将数据保留在<div><i>之间),请查看如何解析HTML / XML。在python中你有一些很棒的库,比如BeautifulSoup(它可以处理破碎的html)。您可以使用dom解析或更有趣的解决方案(并且可以说更好地解决您的问题)来使用SAX和每事件处理。既然你知道每<div> <i>之后你就会得到一个{{1}},你可以做一个简单的堆栈来推送这两个事件之间的所有内容......