正则表达式匹配字符和数字,但不匹配 Java 中的特定字符串
Regular express to match characters and digits but not specific strings in Java
大家晚上好,
我对 Java 中的正则表达式有疑问。
我有一个字符串 s,它应该以小写或大写字符开头,后面跟多少个字符或数字。它不应该匹配关键字(全部小写)"if", "else","while","true","false"
所以在Java
中会是这样的
if(s.matches("^[a-zA-Z][a-zA-Z0-9]*") && !s.equals("if")
&& !s.equals("else") && !s.equals("while") && !s.equals("true")
&& !s.equals("false")){
System.out.println("is ID");
}
else {
System.out.println("not ID");
}
所以输出到不同的 s 看起来像
//s="if"
not ID
//s="ifif"
is ID
//s="while220"
is ID
//s="90"
not ID
我的问题是:
我可以使用一个正则表达式来满足我的 if 语句中的所有条件吗?
谢谢
不过 negative lookahead assertion 您可以在一个正则表达式中完成所有操作。如果输入字符串是 if
或 else
或 while
或 true
或 false
,这将不匹配。下面的模式将匹配除这些实际满足 [a-zA-Z][a-zA-Z0-9]*
.
的关键字以外的字符串
if(s.matches("^(?!(?:if|else|while|true|false)$)[a-zA-Z][a-zA-Z0-9]*"))
{
System.out.println("is ID");
}
else {
System.out.println("not ID");
}
大家晚上好,
我对 Java 中的正则表达式有疑问。
我有一个字符串 s,它应该以小写或大写字符开头,后面跟多少个字符或数字。它不应该匹配关键字(全部小写)"if", "else","while","true","false"
所以在Java
中会是这样的 if(s.matches("^[a-zA-Z][a-zA-Z0-9]*") && !s.equals("if")
&& !s.equals("else") && !s.equals("while") && !s.equals("true")
&& !s.equals("false")){
System.out.println("is ID");
}
else {
System.out.println("not ID");
}
所以输出到不同的 s 看起来像
//s="if"
not ID
//s="ifif"
is ID
//s="while220"
is ID
//s="90"
not ID
我的问题是: 我可以使用一个正则表达式来满足我的 if 语句中的所有条件吗?
谢谢
不过 negative lookahead assertion 您可以在一个正则表达式中完成所有操作。如果输入字符串是 if
或 else
或 while
或 true
或 false
,这将不匹配。下面的模式将匹配除这些实际满足 [a-zA-Z][a-zA-Z0-9]*
.
if(s.matches("^(?!(?:if|else|while|true|false)$)[a-zA-Z][a-zA-Z0-9]*"))
{
System.out.println("is ID");
}
else {
System.out.println("not ID");
}