gpt4 book ai didi

java - 正则表达式匹配字符和数字,但不匹配Java中的特定字符串

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:14 26 4
gpt4 key购买 nike

大家晚上好,

我对 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 。如果输入字符串为 ifelsewhiletruefalse,则不会匹配。下面的模式将匹配除这些关键字之外的实际满足 [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 - 正则表达式匹配字符和数字,但不匹配Java中的特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com