代码之家  ›  专栏  ›  技术社区  ›  Fabian Vilers

多个正则表达式。替换还是or'ed模式?

  •  1
  • Fabian Vilers  · 技术社区  · 16 年前

    什么更有效率?层叠大量正则表达式。将每个正则表达式替换为要搜索的特定模式,或者仅替换为一个正则表达式。替换为OR'ed模式(pattern1 | pattern2 |……)?

    提前感谢,, 费边

    4 回复  |  直到 16 年前
        1
  •  3
  •   Coincoin    16 年前

    我的回答很糟糕,但这要看情况而定。你有多少?你节省的几毫秒真的会有所不同吗?哪种解决方案最具可读性、最易于维护、最具可扩展性?

        2
  •  1
  •   Jeff Moser    16 年前

    一般来说,您可能需要考虑阅读。 Mastering Regular Expressions 这突出了一般优化,以获得更好的性能(特别是第6章)。

    我想说,如果你把所有的东西都放在一个正则表达式中,你可能会获得更快的性能,但是把最有可能的选项放在第一位,然后是第二个最有可能的选项,等等。要注意的第一件事是回溯。如果你这样做

    ".*"
    

    要匹配带引号的字符串,请意识到一旦找到第一个“默认情况下,它将始终转到行尾,然后开始备份,直到找到另一个”。

    精通正则表达式

        3
  •  1
  •   annakata    16 年前

    完全取决于模式和实现逻辑——如果简单(我想大多数现实世界的情况都会是这样),正则表达式会更快,如果复杂的多个操作可能会更快,但如果这是一个真正重要的情况,那么基准测试就是答案。

    否则,它将相对如此接近你不应该关心,过早的优化和所有这些。

        4
  •  1
  •   Todd Owen    15 年前

    无关的 到图案的长度。因此,运行10个差分正则表达式平均需要比将这些模式与“|”组合在一起的单个正则表达式长10倍。