【问题标题】:Coldfusion regular expressions, get content out of html tagsColdfusion正则表达式,从html标签中获取内容
【发布时间】:2013-08-12 08:51:44
【问题描述】:

我目前在尝试解析为 reReplaceNoCase 的字符串中有以下 HTML:

<blockquote class="id-1241">
<p>Stuff</p>
</blockquote>
<p>Test</p>
<blockquote class="id-2441">
<p>More stuff</p>
<blockquote>
<p>Test</p>
</blockquote>
</blockquote>

我想最终将其转换为:

{{1241}}
<p>Test</p>
{{2441}}

所以我想从 blockquote 类中取出 id,并用它来替换 blockquote。我目前正在使用reReplaceNoCase 来执行此操作,但我注意到它在最后一个结束块引用标记的末尾结束正则表达式,而不是“连接”到正确的块引用开始标记的那个,导致以下结果:

{{1241}}

这是我目前使用的:

reply = reReplaceNoCase(reply, '<blockquote class="id-([0-9]+)">(.*)</blockquote>', '{{\1}}', 'ALL');

有没有人有一个更好的例子,结果是我想要的?我想我可以使用带有 reFind 的循环,或者类似的东西,但这似乎太麻烦了,我认为有更简单的方法可以做到这一点,而且性能也更好。

如果可能,我也想避免直接使用 Java。

【问题讨论】:

  • 嵌套块引号可以包含任何类属性吗?
  • 不,嵌套的不会有任何类属性。 (至少,块引用 - 块引用内的其他标签可以)
  • 恐怕这无法做到,因为您无法使用正则表达式解析嵌套结构,如果您发现有人可以仅使用正则表达式解决此问题,请告诉我。跨度>
  • 可以用正则表达式解析嵌套结构——你不能用一个single正则表达式进行任意嵌套。无论如何,不​​是一个理智的人。无论如何,此任务的正确工具是 HTML 解析器,这将使其非常简单。看看jSoup
  • jSoup 是服务器端的,比 CF 内置的 XML 解析好十亿倍。

标签: regex coldfusion


【解决方案1】:

我最终使用了 jQuery——虽然我说过我不喜欢在客户端做,但我工作的公司也不喜欢过多依赖库——我们已经有很多了。

我认为我不需要解释我是如何在 jQuery 中做到这一点的,因为它非常简单,并且已经有上百万个关于在 jQuery 中更改元素的教程。

【讨论】:

  • 在这里发布代码对未来的读者来说比告诉他们“谷歌寻找答案”更有用。如果你没有时间,你可能只想删除线程。
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
相关资源
最近更新 更多