任何正文都可以给我一些正则表达式模式,这些模式将从一些示例字符串中提取版本号(1.5),如
"jdk1.5","jdk-v1.5","jdk-V1.5","jdk V1.5","jdkv1.5","jdk version1.5","1.5.6","v1.5","V1.5","version 1.5","Version 1.5","14.5.4","1.5.4","14.5.4""jdj14.5"
我想将正则表达式模式存储在字符串数组中,并使用上述字符串检查这些模式。如果与任何存储的模式匹配,则输出应为版本号1.5。我想仅从上面的字符串中提取版本号(1.5)。
有效的字符串格式: “jdk1.5”,“jdk-v1.5”,“jdk-V1.5”,“jdk V1.3”,“jdkv1.4”,“jdk version1.5”,“1.5.6”,“v1 .5“,”V1.5“,”版本1.5“,”版本1.5“,”14.5.4“,”1.5.4“,”14.5.4“”jdj14.5“,”14.52.3.42“
无效的字符串格式:“jdk1..2”,“jdk.1.2。”,“。1.2。”
答案 0 :(得分:2)
尝试:
^(jdk[- ]?)?([vV](ersion)? ?)?\d\.\d(\.\d)?$
如果设置[vV]
标记,则可以v
省略CASE_INSENSITIVE
。
答案 1 :(得分:1)
试试这个正则表达式:
(?<=([\w\s]))(\d)\.(\d)(.\d)?
这将匹配您的所有有效格式,并且不匹配任何无效格式。
在此处查看:http://regexr.com?31ubc
如果有人可以帮助我改善它,以及如何制作它,我将不胜感激
匹配1.5.6
答案 2 :(得分:1)
如果你能够形成你想要的东西:
1.5
或1.5.6
或1.5.6.7
或1.5.6.7.8
等的任何内容均为默认有效版本号(数字可以是一个或多个数字,如{{1} })。12.60.70
只有格式1.5
后才能跟一个点(.
)。1.5.6
前面没有1.5
之类的点(.
)。然后,我可以建议你这个正则表达式:
.1.5
查看in action,包括所有阳性样本,并排除您提供的所有阴性样本。
第一个捕获组将是您的版本号。示例代码:
(?!\.)(\d+(\.\d+)+)(?![\d\.])
注意:这仅适用于Java 7+,因为旧版本不支持预测。
答案 3 :(得分:1)
(?<![\d.])(\d+[.])+(\d+)(?![\d.])
检查一下......
它将匹配表单
的字符串 number.number.number.number
没有跟随或前面有一个点
答案 4 :(得分:0)
对于像1.5.6这样的字符串,你可以使用:
[0-9](.[0-9])+
http://regexr.com?31ubo
答案 5 :(得分:0)
使用正则表达式:
(^([jJ][dD][kK])([\s]*[vV]*\d+.\d+(.\d+)*))$
这将使你的一天:)
答案 6 :(得分:-1)
如果您想要捕获两个以上的数字,例如“1.5.6”或“1.5.0”,您可以使用
[0-9](.[0-9])+
或者如果您只想要前两位数字
[0-9].[0-9]
,但这对1.5.0.0这样的字符串不起作用,它会捕获1.5和0.0。