Excel / XLS - 过滤数据(使用正则表达式)并将其转换为新单元格(可能使用 openrefine?)

Excel / XLS - filter data (with regex) and transform it to new cells (Possible with openrefine?)

我遇到了一个问题。我不是 Excel 专家。

我在 Excel 中找到了一些如何使用正则表达式的帖子,例如:

但我不知道如何将数据源中的一些内容过滤到新创建的列中。

示例:

数据源主要是HTML-一个单元格中的源代码。

我构建了用于匹配 links (ahref)、youtube、facebook 视频、infogr.am links 和其他内容的正则表达式。

我想:

Extract/filter link 从 html 到新列,例如:

新专栏"Links"

 <a href="url">link text</a> \n
 <a href="url">link text</a> \n

(每个过滤 link 单元格中的一个新行)

可选:在其旁边粘贴另一列,计算 paragraphs/links(计算行数)。

然后是视频 links(每过滤数据一行)+ 可选计数列。

以此类推

我找到了 Openrefine。这看起来非常好和专业。但是我在那里没有找到如何做。

我不必使用 Excel,稍后结果可以转换为 *.csv - 它将是数据库的数据。

虽然我认为 Excel 对于第一步来说很好,作为可选的计数段落。

要从 HTML 创建一个新列,每个链接都在同一单元格中,用换行符分隔:

forEach(value.parseHtml().select('a'), e, e).join('\n')

你应该看到这样的东西:

或者如果您只需要链接的文本:

forEach(value.parseHtml().select('a'), e, e.htmlText()).join('\n')

或者,如果您只需要网址:

forEach(value.parseHtml().select('a'), e, e.htmlAttr('href')).join('\n')

要从计算链接数的 HTML 创建一个新列:

forEach(value.parseHtml().select('a'), e, e).length()

您的示例中没有图片或视频,因此我无法向您展示如何找到它们。要提取 infogr.am 链接:

forEach(value.parseHtml().select('iframe[src*=infogr.am]'), e, e.htmlAttr('src')).join('\n')

OpenRefine 使用 JSoup selectors,与 CSS 选择器非常相似。只需在 .select() 函数中使用正确的选择器。