合并多个REGEX语句

时间:2011-10-04 16:25:26

标签: regex replace

我有一个示例字符串。

This should be **bold**, *indented* or ***bold and indented***.

使用3个正则表达式解析字符串,这个正则表达式一个接一个地运行以获得以下结果:

This should be <b>bold</b>, <i>indented</i> or <b><i>bold and indented</i></b>.

这很简单,工作正常。但是,我想节省几行(如果可能,更漂亮,更有效,那么为什么不呢?),并合并它们。在单个正则表达式语句中进行所有替换。是否可以提高效率?或者我应该保留原样? (即使我应该,我希望看到一个可能的解决方案?)

我的匹配陈述:

  • \*\*\*(.+?)\*\*\* - &gt; <b><i>$1</b></i>
  • \*\*(.+?)\*\* - &gt; <b>$1</b>
  • \*(.+?)\* - &gt; <i>$1</i>

1 个答案:

答案 0 :(得分:2)

老实说,将它们保留为3个单独的正则表达式几乎可以肯定......

  1. 更易阅读
  2. 简单
  3. (由于#1和#2)更易于维护。
  4. 当涉及正则表达式时,更少的行并不总是更好,尤其


    另外,你实际上只需要2个正则表达式 - 粗体和斜体。只需要先运行粗体:

    ***foo***
    
    大胆的正则表达式后,

    成为......

    *<b>foo</b>*
    

    然后斜体正则表达式使...

    <i><b>foo</b></i>
    

    哪个是正确的输出。 (首先运行粗体的原因是因为斜体将***<i>*</i>匹配,这是错误的。)