Возник вопрос по поводу регулярных выражений
Условие задачи: На вход подается строка, каждая строка представляет собой двоичный код. Правильным кодом называется строка, которая состоит либо только из нулей, либо только из единиц, либо нули и единицы в ней чередуются. Написать статическую функцию boolean isCorrectCode(String s), которая возвращает, правильный ли код (использовать matches)
Мой код:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class P37 {
public static void main(String[] args) {
Scanner src = new Scanner(System.in);
String s = src.nextLine();
System.out.println(isCorrectCode(s));
}
static boolean isCorrectCode(String s) {
Pattern p1 = Pattern.compile("1+");
Matcher m1 = p1.matcher(s);
Pattern p2 = Pattern.compile("0+");
Matcher m2 = p2.matcher(s);
Pattern p3 = Pattern.compile("(0-1)+");
Matcher m3 = p3.matcher(s);
Pattern p4 = Pattern.compile("(1-0)+");
Matcher m4 = p4.matcher(s);
if (m1.find() || m2.find() || m3.find() || m4.find() ) {
return true;
} else {
return false;
}
}
}
Возникли некоторые проблемы: Как записать выражение в скобках: 1+ или ^1+$(то есть показать начало и конец текста, если я правильно это понимаю) Если записать так ^ $ во всех четырех выражениях, то программа неверная. Но все же кажется сама программа неверно написана