2015-02-23 72 views
1

我写逐项水平的解析器:正则表达式重复组或显式模式

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。

编辑:我正在阅读所有的评论和答复。感谢大家的意见和建议。

+2

至少,第一个是毫无疑问更好,我的眼睛更具可读性。 – anubhava 2015-02-23 04:02:06

+0

第二个是最好的,因为没有回溯发生在第二个,而回溯将发生在第一个.. – 2015-02-23 04:04:30

+1

在没有捕获组没有差异。通过捕获组,第二种方法的优点是每个数字都可以在单独的捕获组中使用。 – dasblinkenlight 2015-02-23 04:05:08

回答

1

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