匹配包含至少一个“5”数字的偶数

时间:2013-06-08 16:28:10

标签: regex

我必须找到定义任何偶数的正则表达式,其中至少有一个“5”数字。我一直在考虑:

(0+1+2+3+4+5+6+7+8+9)* 5 (0+1+2+3+4+5+6+7+8+9)* (0+2+4+6+8)

这会有用吗?有没有办法缩短它?

好吧,我不确定这是否是发布此问题的正确网站...但标签存在:P

1 个答案:

答案 0 :(得分:3)

你的正则表达式很好看。我不认为你可以缩短它(如果我们谈论理论 regexps;真正的编程语言有任何数字的[0-9]\d等快捷方式。

正如其他人所指出的,你的正则表达式也会匹配从任意数量的零开始的数字。如果你不想这样,你当然会尝试将第一个数字与(1|2|3|4|5|6|7|8|9)匹配,但现在你有一个特例:如果第一个数字是5怎么办?所以你必须添加更多分支。

你的正则表达式很好,但我认为只匹配没有前导零的数字是一个很好的练习,你应该尝试它,即使你的任务不需要这个。


这是一般性建议。要求您创建正则表达式的问题最好由Test-driven development帮助。也就是说,尝试编写正则表达式之前,为它创建了一组测试。它有很多好处:

  1. 如果您已经编写了许多测试并且regexp通过了它们,那么您几乎可以确定它已经写好了。
  2. 如果在创建regexp之前编写,测试的质量会更高。
  3. 看到你刚刚手工制作的正则表达式立刻通过你的全面测试让你开心,相信我=)。