|
1
66
我将格式表述为:
作为regexp,这是:
[编辑添加:此解决方案是一种简洁的验证方法,但已经指出提取值需要额外的工作。是否通过使regexp复杂化,或者通过处理匹配的组来处理这一问题是一个品味问题。
在我的解决方案中,组捕获
另外,最右边的组将捕获最后一个组件,即使少于三个组件,例如,两个组件的输入导致第一个和最后一个组捕获,中间的一个未定义。我认为这可以由支持的非贪婪团体来处理。 在regexp之后处理这两个问题的Perl代码可以是这样的:
这并不比分拆短多少
|
|
|
2
38
使用regex,现在有两个问题。 我将把它拆分为点(“.”),然后确保每个部分都是通配符或一组数字(regex现在是完美的)。如果事情是有效的,您只需返回正确的分割块。 |
|
|
3
11
这可能有效:
在顶层,“*”是有效版本号的特殊情况。否则,它以数字开头。然后是零、一或两个“.nn”序列,后跟一个可选的“.*”。此regex将接受1.2.3.*这在您的应用程序中可能允许,也可能不允许。
检索匹配序列的代码,尤其是
|
|
|
4
11
感谢所有的回复!这是ACE: 基于OneByone的回答(对我来说最简单),我添加了一些非捕获组(the“(?”:'部件-感谢VONC向我介绍非捕获组!),因此捕获的组只包含数字或*字符。
非常感谢大家! |
|
|
5
6
不知道您在哪个平台上,但是在.NET中有System.Version类,它将为您解析“n.n.n.n”版本号。 |
|
|
6
5
我倾向于同意分裂的建议。 我在Perl中为您的问题创建了一个“测试人员”。
电流输出:
|
|
|
7
5
我的2分:我有这样的场景:我必须从字符串文本中解析版本号。 (我知道这与最初的问题非常不同,但是谷歌搜索来找到一个用于解析版本号的regex在顶部显示了这个线程,所以在这里添加这个答案) 所以字符串文字应该是这样的:“服务版本1.2.35.564正在运行!” 我必须从这个文本中分析1.2.35.564。根据@ajborley的提示,我的regex如下:
一个小的C代码片段测试如下:
|
|
|
8
4
这应该符合你的规定。它取决于通配符位置,是一个嵌套的regex:
|
|
|
9
4
我看过很多答案,但是…我有一个新的。至少对我有用。我添加了一个新的限制。版本号不能以零开头(主要、次要或补丁),后面跟其他零。
它是基于前一个。但我觉得这个解决方案更好…对我来说; 享受!!!! |
|
|
10
3
另一种尝试:
这给出了第4、5、6组中的三个部分,但: 它们右对齐。因此,4、5或6中的第一个非空字段给出了版本字段。
|
|
|
11
3
我需要搜索/匹配版本号,这遵循Maven约定,甚至只是一个数字。但在任何情况下都没有限定符。很奇怪,我花了不少时间才想到:
这确保了版本,
一个缺点是,版本甚至可以以“.”结尾,但它可以处理不定长度的版本(如果您想称之为疯狂的版本控制) 比赛:
如果你不不满意“.”结尾,可以结合endswith逻辑 |
|
12
2
与前6个例子完全匹配,并拒绝其他4个例子
您可以删除'(?“女士”
|
|
|
13
2
这也符合1.2.3.*的要求。
我建议不那么优雅的: (*\ d+(?\d+)?(*)?“d+.\d+.d+” |
|
|
14
2
请记住,regexp是贪婪的,因此如果您只是在版本号字符串中搜索,而不是在更大的文本中搜索,请使用^和$标记字符串的开始和结束。 来自greg的regexp似乎工作正常(只是在我的编辑器中进行了一次快速的尝试),但是根据您的库/语言,第一部分仍然可以在错误的版本号中匹配“*”。也许我错过了一些东西,因为我已经一年左右没有使用regexp了。 这应确保您只能找到正确的版本号: ^(\*\d+(\.\d+)*(\.\*)?)$ 编辑:实际上格雷格已经添加了它们,甚至改进了他的解决方案,我太慢了:) |
|
|
15
2
似乎很难让一个正则表达式完全满足您的需要(即只接受您需要的情况并拒绝 全部的 其他 和 返回三个组件的一些组)。我试了一下,想出来:
IMO(我没有进行过广泛的测试)作为输入的验证器应该可以很好地工作,但是问题是这个regex没有提供一种检索组件的方法。为此,你仍然需要在周期上做一个分割。 这个解决方案不是一体的,但在大多数情况下,在编程时不需要这样做。当然,这取决于代码中可能存在的其他限制。 |
|
|
16
2
也许更简洁的一点是:
然后可以将其增强到1.2.3.4.5.*或使用*或2而不是0,2严格限制到X.Y.Z。 |
|
|
17
2
指定XSD元素:
|
|
18
2
我接受这个,作为一个很好的练习- vparse ,它有一个 tiny source ,功能简单:
|
|
|
19
1
另一个解决方案:
|
|
|
Gigi Bayte 2 · Git认为领先分支机构落后 8 年前 |
|
|
acanessa · 联接两个表并应用分组依据,但更改排序顺序 8 年前 |
|
|
diegoalmesp · 在ReactJs中对组件进行版本控制 8 年前 |
|
|
Kamil W · Artifactory-NuGet-最大唯一快照数 8 年前 |