【问题标题】:Regular Expression Repeating Group or Explicit Pattern正则表达式重复组或显式模式
【发布时间】:2015-02-23 03:58:25
【问题描述】:

我正在为逐项级别编写解析器:

1.0.0.0.0
  1.1.0.0.0
  1.2.0.0.0
2.0.0.0.0

我编写了正则表达式来匹配此模式以使用非重复组:

\d{1,4}(?:\.\d{1,4}){4}

但在审查中,我的同事建议重新编写:

\d{1,4}\.\d{1,4}\.\d{1,4}\.\d{1,4}\.\d{1,4}

这是一个主观的东西吗?还是一个比另一个更好?后者对于不太了解正则表达式语法的人来说更容易阅读。在这种情况下,性能不是问题,但是在更大的目标上性能会更好吗?

正则表达式引擎将是 .Net。

编辑:我正在阅读所有 cmets 并回复。谢谢大家的意见。

【问题讨论】:

  • 毫无疑问,第一个更好,至少在我看来更具可读性。
  • 第二个最好,因为第二个不会发生回溯,而第一个会发生回溯..
  • 在没有捕获组的情况下没有区别。对于捕获组,第二种方法的优点是每个数字都可以在单独的捕获组中使用。
  • @AvinashRaj 回溯在这两种情况下都会发生。在第二种情况下,如果失败,则会进行回溯。
  • 将其与更大的数据进行比较,您会看到差异。

标签: .net regex performance


【解决方案1】:

这是一个完全主观的事情,它们在性能或功能上没有显着差异。 FWIW,我认为第一个更清晰,更容易看到你的意图,第二个需要仔细扫描,当我扫描时,我认为每个组必须有一些差异,否则你会使用第一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多