我必须找到定义任何偶数的正则表达式,其中至少有一个“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
我必须找到定义任何偶数的正则表达式,其中至少有一个“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-9]
或\d
任何数字的快捷方式)。
正如其他人指出的那样,您的正则表达式还将匹配从任意数量的零开始的数字。如果您不想要这个,您当然会尝试将第一个数字与 匹配(1|2|3|4|5|6|7|8|9)
,但现在您有一个特殊情况:如果第一个数字是5
怎么办?所以你必须添加更多的分支。
你的正则表达式很好,但我认为让它只匹配没有前导零的数字是一个很好的练习,你应该尝试一下,即使你的任务不需要这个。
这是一个一般建议。需要您创建正则表达式的问题最好借助测试驱动开发。也就是说,在尝试编写正则表达式之前,您需要为其创建一组测试。它有很多好处: