regex 如何使用正则表达式匹配文本并跳过HTML标记?

cbjzeqam  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(104)

我在QuickBase表中有一堆记录,其中包含一个富文本字段,换句话说,它们都包含一些文本段落,其中混杂着<p><strong>等HTML标记。
我需要将记录迁移到一个新表中,其中相应的字段是纯文本字段。为此,我想去掉所有HTML标记,只留下字段值中的文本。
例如,从下面的输入中,我希望提取just a small example link to a webpage

<p>just a small <a href="#">
  example</a> link</p><p>to a webpage</p>

由于我试图快速完成这项工作,而不需要编码或使用外部工具,因此我只能使用Quickbase Pipelines ' Text channel工具,它的工作方式是我定义一个正则表达式模式,它只输出与模式匹配的位。
到目前为止,我已经能够想出这个正则表达式(Python风格,因为QB的后端是用Python编写的),它正确地做了与我需要的完全相反的事情,即它只匹配HTML标签:

/(<[^>]*>)/

从某种意义上说,我需要这种表达的负面形象,但我自己还没有能力建立它。
您的帮助在“否定”上述表达是非常感谢。

eyh26e7m

eyh26e7m1#

假设其他地方没有<>,也没有实体编码的lookbehind

(?:(?<=>)|^)[^<]+

See this demo at regex101
(?:(?<=>)|^)是字符串的^start之间的alternation或查找任何>[^<]+从那里匹配不是<one or more字符(取反字符类)。

相关问题