Строка соответствует только 3 конкретным словам - PullRequest
0 голосов
/ 01 июня 2018

Я хочу, чтобы регулярное выражение совпадало со строкой, в которой есть только слова A, I и D без какого-либо порядка или сортировки.

также: если в строке есть буква, которой нет ни в одном из них, то она не входит весли

Я пробовал с ||и другие символы, но все еще не могу его получить

Не обязательно быть регулярным выражением Я просто пытаюсь найти способ решить его

String message = "AIDDDAAIDAAA"
if(message.matches("(A|D|I)")){

         System.out.println("Matches");
}

Ответы [ 4 ]

0 голосов
/ 01 июня 2018

Вы можете просто проверить каждый символ, составляющий строку:

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");
0 голосов
/ 01 июня 2018

Вы можете использовать все интересующие вас символы в квадратных скобках.Чтобы сопоставить одно или несколько вхождений этих символов в квадратные скобки, добавьте к нему +.Строка message должна состоять только из этих символов, чтобы ее можно было считать совпадающей.

Попробуйте это.

String message  = "ADAIAIAIAIAIADDDAI";
if(message .matches("[ADI]+")) {
    System.out.println("Matches");
}
0 голосов
/ 01 июня 2018

Поскольку вы спрашиваете о "словах", я думаю, A, D и I означают слова с более чем одной буквой, и именно поэтому вы не используете класс символов [ADI].Вам просто нужно добавить +, потому что message состоит из большего количества слов.

    String message = "AIDDDAAIDAAA";
    if (message.matches("(A|D|I)+")) {
        System.out.println("Matches");
    }

scigs, ответ также работает.

0 голосов
/ 01 июня 2018

Вы можете использовать string replace, чтобы сделать что-то похожее:

String message = "AIDDDAAIDAAA";
message = message.replace("A","")
    .replace("I","")
    .replace("D","");
if (message.equals("")) {
    //do your thing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...