【发布时间】: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