Java 仅3个特定单词的字符串匹配
我想要一个正则表达式匹配一个字符串,该字符串只包含单词a、I和D,没有任何顺序或排序 另外:如果字符串中有一个字母不是这些字母中的任何一个,则不进入if 我试过使用| |和其他符号,但仍然无法得到它 不必是正则表达式,我只是想找到一个解决方法Java 仅3个特定单词的字符串匹配,java,regex,string,match,Java,Regex,String,Match,我想要一个正则表达式匹配一个字符串,该字符串只包含单词a、I和D,没有任何顺序或排序 另外:如果字符串中有一个字母不是这些字母中的任何一个,则不进入if 我试过使用| |和其他符号,但仍然无法得到它 不必是正则表达式,我只是想找到一个解决方法 String message = "AIDDDAAIDAAA" if(message.matches("(A|D|I)")){ System.out.println("Matches"); } 您可以使用字符串替换来执行类似的操作:
String message = "AIDDDAAIDAAA"
if(message.matches("(A|D|I)")){
System.out.println("Matches");
}
您可以使用字符串替换来执行类似的操作:
String message = "AIDDDAAIDAAA";
message = message.replace("A","")
.replace("I","")
.replace("D","");
if (message.equals("")) {
//do your thing
}
您可以使用字符串替换来执行类似的操作:
String message = "AIDDDAAIDAAA";
message = message.replace("A","")
.replace("I","")
.replace("D","");
if (message.equals("")) {
//do your thing
}
您可以在方括号中包含所有感兴趣的字符。要匹配方括号中这些字符的一个或多个匹配项,请将
+
附加到方括号中。消息
字符串应完全由这些字符组成,以将其视为匹配
试试这个
String message = "ADAIAIAIAIAIADDDAI";
if(message .matches("[ADI]+")) {
System.out.println("Matches");
}
您可以在方括号中包含所有感兴趣的字符。要匹配方括号中这些字符的一个或多个匹配项,请将
+
附加到方括号中。消息
字符串应完全由这些字符组成,以将其视为匹配
试试这个
String message = "ADAIAIAIAIAIADDDAI";
if(message .matches("[ADI]+")) {
System.out.println("Matches");
}
既然你问的是“单词”,我想A
,D
和I
代表多个字母的单词,这就是为什么你不使用字符类[ADI]
。您只需添加一个+
,因为消息包含更多的单词
String message = "AIDDDAAIDAAA";
if (message.matches("(A|D|I)+")) {
System.out.println("Matches");
}
scigs的答案也很有效。既然你问的是“单词”,我想A
、D
和I
代表多个字母的单词,这就是为什么你不使用字符类[ADI]
。您只需添加一个+
,因为消息包含更多的单词
String message = "AIDDDAAIDAAA";
if (message.matches("(A|D|I)+")) {
System.out.println("Matches");
}
scigs answer也可以工作。您只需检查组成字符串的每个字符:
String message = "AIDDDAAIDAAA";
boolean matches = true;
for (int i=0; i<message.length(); i++;){
if (message.charAt(i)!='A' && message.charAt(i)!='I' && message.charAt(i)!='D'){
matches = false;
break;
}
}
if (matches) System.out.println("Matches");
String message=“AIDDDAAIDAAA”;
布尔匹配=真;
对于(int i=0;i您可以只检查组成字符串的每个字符:
String message = "AIDDDAAIDAAA";
boolean matches = true;
for (int i=0; i<message.length(); i++;){
if (message.charAt(i)!='A' && message.charAt(i)!='I' && message.charAt(i)!='D'){
matches = false;
break;
}
}
if (matches) System.out.println("Matches");
String message=“AIDDDAAIDAAA”;
布尔匹配=真;
对于(int i=0;所有3个字母或任何?AAAA
或iidddi
都是匹配还是不匹配?是的,甚至只有As可以有效你知道a
、i
和D
都是字母,而不是单词,对吗?所有3个字母或任何?AAAA
或iidddi
都是匹配还是不匹配?是的,甚至只有ful。)l of As可以是有效的您知道A
、I
和D
是字母,而不是单词,对吗?在这里使用字符集会产生误导-字符类不是字符集。此外,您可能需要添加中的表达式匹配()
应该匹配整个字符串。是的,我意识到字符集会产生误导,改为字符集。在此处使用字符集会产生误导-字符类不是字符集。此外,您可能需要添加中的表达式匹配()
应该匹配整个字符串。是的,我意识到字符集会产生误导,改为字符。非常确定(A | D | I)+
直接等同于[ADI]+
。我想不出任何字符串与前者匹配,但与后者不匹配。@Vasan A、D和我似乎是单词的占位符。明白了。是的,那就有意义了。它们不是占位符,我只想让字符串包含那些单词。我确信(A | D | I)+
直接等同于[ADI]+
。我想不出任何字符串与前者匹配,但与后者不匹配。@Vasan A、D和我似乎是单词的占位符。明白了。是的,这很有意义。它们不是占位符,我希望字符串中只包含这些单词