【问题标题】:How can I combining the following RegExs into one expression?如何将以下 RegEx 组合成一个表达式?
【发布时间】:2011-05-31 05:09:51
【问题描述】:

我正在使用以下正则表达式从字符串中去除 HTML 标记

<[^>]*>

但是,这并没有消除空行。我发现了另一个成功删除任何空行的 RegEx:

[#Chr(13)##Chr(10)#]+

我试图将两者结合起来:

ReReplaceNoCase(arguments.string, "(<[^>]*>)([#Chr(13)##Chr(10)#]+)", "", "ALL")

但这不起作用。我正在使用 ColdFusion 来执行此操作,这应该可以解释 # 标志。

我认为() 用于对 RegEx 中的运算符进行分组,但在我尝试组合这两个表达式时似乎不起作用。

【问题讨论】:

  • 为什么需要将它们组合成一个正则表达式?不能分两步做吗?
  • @Mark,我可以,但是通过一个函数而不是两个函数运行字符串不是更有效吗?如果不是,为什么?
  • @Mauricio,我去看看,谢谢。
  • 您是否测量过两步解决方案的性能并发现它是您应用程序的瓶颈?如果没有,您可能会过早地进行优化。

标签: regex coldfusion


【解决方案1】:

假设您拥有的两个正则表达式可以按照您的意愿工作,那么您可以使用交替组合它们:

<[^>]*>|[#Chr(13)##Chr(10)#]+

我强烈怀疑您发布的正则表达式实际上可以正常工作。我建议您 not 使用正则表达式来解析 HTML,因为 HTML 不是常规语言。请改用 HTML 解析器。

【讨论】:

  • 马克,我想做的就是去掉字符串中的 HTML,以便在跨度或锚点的“标题”属性中使用它;我不应该为此使用正则表达式吗?
  • @Mel:你的问题就像是在说“我只想卸下一些螺丝——而不是把它们拧进去。而且它们只是 i> 螺丝,所以我认为我不需要螺丝刀。在这种情况下,锤子不工作吗?” - 嗯,它可能某些时间起作用,但它仍然不是最简单的方法。
  • 我明白了。我将尝试在 ColdFusion 中找到一个可以执行此操作的函数。我已经习惯看到人们为此目的使用 RegEx,我认为这是正确的做法。
【解决方案2】:
stripcr(ReReplaceNoCase(arguments.string, "(<[^>]*>)", "", "ALL"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 2013-03-21
    • 1970-01-01
    • 2017-08-26
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多