我想在Java中找到一个适用于Windows Server 2008操作系统版本的正则表达式,该版本不包含" R2" 正在使用我正在使用的正则表达式 -
(?i)Win\w*\s*(?i)Server\s*(2008)\s*(?!R2)\s*\w*
可能的值:
Windows Server 2008 datacenter
- 正确匹配Windows Server 2008
- 正确匹配Windows Server 2008 R2 Datacenter
- 不匹配Windows Server 2008 r2 datacenter
- 不匹配Windows Server 2008 R2
- 匹配错误(因为R2
符合正则表达式中的\w*
) 我在正则表达式中做错了什么?
答案 0 :(得分:1)
您可以考虑使用以下正则表达式:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegEx {
public static void main(String[] args) {
String s = "Windows Server 2008 datacenter";
String r = "(?i)Win\\w*\\s*Server\\s*(2008)(?!\\sR2).*?$";
Pattern p = Pattern.compile(r);
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
}
}
参见 regex demo
Java (demo)
AnnotationConfigApplicationContext(PseudoSpringBootApplication.class)
答案 1 :(得分:0)
正则表达式匹配字符串(如果它包含R2
)private boolean isR2(String text) {
return (text.toLowerCase().matches(".*r2.*"));
}
没有正则表达式,你可以做
private boolean isR2(String text) {
return (text.toLowerCase().indexOf("r2")>0);
}
正确匹配所有示例:
Windows Server 2008 datacenter // false
Windows Server 2008 //false
Windows Server 2008 R2 Datacenter //true
Windows Server 2008 r2 datacenter //true
Windows Server 2008 R2 //true