我必须找到定义任何偶数的正则表达式,其中至少有一个“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
答案 0 :(得分:3)
你的正则表达式很好看。我不认为你可以缩短它(如果我们谈论理论 regexps;真正的编程语言有任何数字的[0-9]
或\d
等快捷方式。
正如其他人所指出的,你的正则表达式也会匹配从任意数量的零开始的数字。如果你不想这样,你当然会尝试将第一个数字与(1|2|3|4|5|6|7|8|9)
匹配,但现在你有一个特例:如果第一个数字是5
怎么办?所以你必须添加更多分支。
你的正则表达式很好,但我认为只匹配没有前导零的数字是一个很好的练习,你应该尝试它,即使你的任务不需要这个。
这是一般性建议。要求您创建正则表达式的问题最好由Test-driven development帮助。也就是说,在尝试编写正则表达式之前,为它创建了一组测试。它有很多好处: