gpt4 book ai didi

html - 在 HTML [REGEX, RUBY] 中从 <!--[if gte mso 9]> 移除到 <![endif]-->

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:30 24 4
gpt4 key购买 nike

我有一个带有 <!--[if gte mso 9]> 和 <![endif]--> 标签的 HTML 文本。我想删除这两个标签之间的所有内容。我将 ruby​​ 函数 gsub 与 Regex 表达式一起使用,但它不起作用。

这是我试过的:

text = "<!--[if gte mso 9]><xml>\n <w:WordDocument>\n [...] \n</style>\n<![endif]-->"

text2 = text.gsub /(?=<!\-\-\[if gte mso 9\]>)(.*?)(?<=<!\[endif\]\-\->)/, ""

我想要的答案是:

text2 = "<!--[if gte mso 9]><![endif]-->"

甚至:

text2 = ""

我根据 this article 试过这个

我试过了 this在线 Regex 测试器,这似乎是正确的方法,但它不适用于我的程序!

请帮忙!

提前致谢!

最佳答案

试试这个正则表达式 /(?<=<!--\[if gte mso 9\]>).*?(?=<!\[endif\]-->)/m , 然后做 gsub在弦上。你会得到 <!--[if gte mso 9]><![endif]-->

  • (?<=<!--\[if gte mso 9\]>)后面是正面的,与 <!--\[if gte mso 9\]> 匹配字符串,但不将其包含在结果中。

  • .*匹配任意字符 0 次或多次。

  • (?=<!\[endif\]-->)是一个积极的期待,与 <!\[endif\]--> 匹配但不将其包含在结果中。

  • m末尾的标识符表示匹配多行字符串。因为你用“”声明了你的字符串,\n将被解释为一个新行。

本质上,您正在匹配两个标签之间的所有内容。

在你的正则表达式中,/(?=<!\-\-\[if gte mso 9\]>)(.*?)(?<=<!\[endif\]\-\->)/ ,你对第一个标签使用了正视,对第二个标签使用了正视,你需要翻转它们。

  • Positive look forward 匹配主表达式之后的组,但不将其包含在结果中。

  • Positive look behind 匹配主要表达式之前的组,但不将其包含在结果中。

关于html - 在 HTML [REGEX, RUBY] 中从 &lt;!--[if gte mso 9]> 移除到 &lt;![endif]-->,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39090155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com