Java 仅3个特定单词的字符串匹配

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"); } 您可以使用字符串替换来执行类似的操作:

我想要一个正则表达式匹配一个字符串,该字符串只包含单词a、I和D,没有任何顺序或排序

另外:如果字符串中有一个字母不是这些字母中的任何一个,则不进入if

我试过使用| |和其他符号,但仍然无法得到它

不必是正则表达式,我只是想找到一个解决方法

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和我似乎是单词的占位符。明白了。是的,这很有意义。它们不是占位符,我希望字符串中只包含这些单词