Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式使用多个元素提取html源代码_Html_Regex - Fatal编程技术网

正则表达式使用多个元素提取html源代码

正则表达式使用多个元素提取html源代码,html,regex,Html,Regex,在您告诉我不要使用正则表达式解析html之前,我知道这一点,但我的公司使用Iconico数据提取器从其网站提取数据,它允许您创建自定义脚本,但它必须是javascript中的正则表达式,因此我坚持使用正则表达式来实现我的目标 我需要的是以下面的html示例为例,提取每一行 <b>Item 1</b> Text <br> <b>Item 2</b> Text <br> <b>Item 3</b&g

在您告诉我不要使用正则表达式解析html之前,我知道这一点,但我的公司使用Iconico数据提取器从其网站提取数据,它允许您创建自定义脚本,但它必须是javascript中的正则表达式,因此我坚持使用正则表达式来实现我的目标

我需要的是以下面的html示例为例,提取每一行

  <b>Item 1</b> Text <br>
  <b>Item 2</b> Text <br>
  <b>Item 3</b> Text <br>
<p><font color="#000000" face="Arial, Helvetica, sans-serif"><b>Item 4:</b></font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif">Detailed Description</font></p>
项目1文本
项目2文本
项目3文本
项目4:

详细说明

我需要的是将每个项目分解为一个表达式,以检索包含标记的所有行,以及它在html中的显示方式。我已经尝试了
/*详细信息(.|\s)*?\/a>/gi
,这让我得到了第4项。但我无法确定如何获得第1-3项,因为我需要的只是从到第1项(.|\s)*?\br>/gi的那一行,根本不起作用,在玩了几个小时后,我再也没有前进的余地了。如果可能的话,我还需要去掉字体标签。我认为在中间有一个结尾<代码> <代码>是复杂的。

任何人都可以提供一些关于如何设置表达式的建议。我已经知道,通用consenus对Regex来说是不可能的,所以没有必要再走这条路:)

这对我来说都是新鲜事,所以希望我能解释一下我想做什么


提前感谢

我已经使用正则表达式解析html,但它还没有正常工作。我用了如下的方法。正如您所看到的,有很多“*?”表示非贪婪匹配任何字符。非常有用

你用什么语言?您可能必须设置允许解析换行符的选项,否则可能会将每一行视为单独的输入

在python中添加re.DOTALL选项。在PHP中,有一个特殊的斜杠标记可供使用

<b>(.*?)<br>.*?<b>(.*?)<br><b>(.*?)<br><p.*?sans-serif"><b>(.*?)</p>.*?serif">(.*?)</p>
(.*)
*?(.*)
(.*)
(.*)
(.*)


我使用正则表达式解析html,但在它正常工作之前。我用了如下的方法。正如您所看到的,有很多“*?”表示非贪婪匹配任何字符。非常有用

你用什么语言?您可能必须设置允许解析换行符的选项,否则可能会将每一行视为单独的输入

在python中添加re.DOTALL选项。在PHP中,有一个特殊的斜杠标记可供使用

<b>(.*?)<br>.*?<b>(.*?)<br><b>(.*?)<br><p.*?sans-serif"><b>(.*?)</p>.*?serif">(.*?)</p>
(.*)
*?(.*)
(.*)
(.*)
(.*)


为了将其与数据提取器一起使用,我做了一些关于在两个关键字之间获取数据的研究,
(第1项:.*?
)/gi
工作得非常出色

不幸的是,现在有人告诉我,从现在起,标签必须被剥掉,所以我需要从头抓起。如果我需要帮助,我会发布一个新问题


非常感谢您的响应和帮助

为了将此与数据提取器一起使用,我做了一些关于在两个关键字之间获取数据的研究,
(第1项:.*?
)/gi
工作得非常出色

不幸的是,现在有人告诉我,从现在起,标签必须被剥掉,所以我需要从头抓起。如果我需要帮助,我会发布一个新问题


非常感谢您的回复和帮助

我真的不知道输入和实际/预期输出是什么。你能提供一个例子来说明你的需要吗?@sp00m我已经在上创建了一个JSFIDLE(尽我所能)。虽然当我运行它时,它似乎做了预期的事情,但我通过实际的数据提取器执行它,它什么也不做!我无法真正了解输入和实际/预期输出。你能提供一个例子来说明你的需要吗?@sp00m我已经在上创建了一个JSFIDLE(尽我所能)。虽然当我运行它时,它似乎做了预期的事情,但我通过实际的数据提取器执行它,它什么也不做!谢谢,我已经尝试了这段代码,不幸的是,无论是RegExr还是数据提取器软件似乎都不喜欢它。我正在使用Javascript。它似乎不喜欢引号。(.*?
*?(.*?
(.*?
)(.*?
(.*?

*?serif.*?>(.*?

)-无引号谢谢我试过这段代码,不幸的是,RegExr或数据提取器软件似乎都不喜欢它。我正在使用Javascript。它似乎不喜欢引号。(.*?
*?(.*?
(.*?
)(.*?
(.*?

*?衬线。*?>(.*?

-sans引号