0

我有一个类似 sca_HelloWorld_rev2.0.jar 的文件名

sca_{ProjectName}_rev{revisionId}.jar 

Id can be 2.11 ,3.0,3,4.0,5,4.564

ProjectName can be HelloWorld,HelloWorld123,Hello_world 

我正在尝试在 Java 中进行正则表达式验证?如何在 Java 中实现这一点?

谢谢。

4

3 回答 3

3
static boolean isValid(String s){
    return s.matches("^sca_\\w+?_rev\\d+(?:\\.\\d+)?\\.jar$");
}

\\w+匹配一个或多个单词字符,即A-Z a-z 0-9 _.

\\d+(?:\\.\\d+)?匹配一个或多个数字,可选地后跟一个.和一个或多个数字。

^and表示字符串的$开始和结束。

于 2013-04-30T15:32:22.003 回答
0

您可以使用String 函数进行匹配。所以对于你的情况

projectName.matches("sca_(HelloWorld|HelloWorld123|Hello_world)_rev(2.11|3.0|3|4.0|5|4.564).jar");

查看http://www.regexplanet.com/advanced/java/index.html以测试您的正则表达式

编辑:假设您的项目名称实际上可以是任何东西,并且您的修订号可以是 #、#.## 的格式,然后使用这个正则表达式

projectName.matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") 将为这些输入返回 true。

"sca_ADJOWE_rev2.12315.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE

"sca_PROJECT1_rev6.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE

"sca_HELLOWORLD_rev2.1.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = TRUE

"sca_HELLOWORLD_rev2.1.152.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = FALSE

"sca_rev2.1.jar".matches("sca_.+_rev[0-9]+(.[0-9]+)*.jar") = FALSE

转到我上面发送的链接,输入该正则表达式并放入一些测试输入,如果您需要更多微调,请使用它。

于 2013-04-30T15:26:39.683 回答
0

这种模式必须是有效的:

sca_\w+?_rev\d.\d{1,3}\.jar
于 2013-04-30T15:32:14.497 回答