我想在两种不同类型的版本号之间进行选择:
2014.4.5.6
2014.4.5
(也是修订部分是可选的)
我有一个搜索模式:(\d*)\.(\d*)\.(\d*)(\.(\d*))?
找到1.和2.总是五个实例:
2014.4.5.6
有5个小组:2014
,4
,5
,.6
,6
2014.4.5
有5个小组:2014
,4
,5
,[空],[空] 我的问题是:
所有这些都在一个正则表达式中。可能吗?实际上,解决问题A就足够了,搜索模式就像现在一样离开2.
答案 0 :(得分:1)
对于(a),您可以通过在开头插入(...)
或
?:
非捕获
对于您的示例,这将提供(?:...)
。
对于(b),您无法摆脱空组,但您可以查看(\d*)\.(\d*)\.(\d*)(?:\.(\d*))?
上的Success
property,看看它是否成功。
(这可以让您区分例如Group
成功匹配零字母,([A-Z]*)
不匹配。)
答案 1 :(得分:0)
此正则表达式适用于任意数量的组:
(\d+)(?:\.|$)
正在检查一组数字后跟一个点或文件的末尾。 它将返回示例1中的4个匹配项和示例2中的4个匹配项。
即。 2014.4.5.6将捕获
2014
4
5
6
答案 2 :(得分:0)
实际上,在使用.NET测试应用程序时,我发现这种搜索模式实际上对我有用:(\d*)\.(\d*)\.(\d*)(\.(\d*)?)?
我之前在online regex builder玩。我在那里有那些额外的团体。应该从一开始就使用.NET测试工具。