Как сделать так, чтобы функцией matches() находить буквенно-цифровые String?
1) есть строчка else if (blocks[0].matches("[a-z0-9]")), не понимаю как настроить регулярное выражение, чтобы ловило, например, буквенно-цифровую (одна буква и цифра) строку типа "a1" и выдавало сообщение System.out.println("Invalid identifier"); Но чтоб пропускало строки типа a, b и т.п.
2) как сделать так чтоб другая matches ловила, например, a = 7 = 8, но пропускала бы, например, a = 3?
import java.util.Scanner;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Long> map = new HashMap<>();
for (; ; ) {
BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
String data = sc.readLine().replaceAll("", "")
.replaceAll(" ", "")
.replaceAll(" ", "")
.replaceAll(" ", "")
.replaceAll(" ", "");
String[] blocks = data.split("=");
if (blocks[0].equals("/exit")) {
System.out.println("Bye!");
System.exit(0);
} else if (blocks[0].matches("[a-z0-9]")) {
System.out.println("Invalid identifier");
} else if (data.matches("(.*)=(.*)")) {
if (blocks.length == 2) {
try {
map.put(blocks[0], Long.parseLong(blocks[1]));
} catch (Exception e) {
System.out.println("Invalid assignment");
}
System.out.println(map);
}
} else if (map.containsKey(blocks[0])) {
System.out.println(map.get(blocks[0]));
} else if (!map.containsKey(blocks[0])) {
System.out.println("Unknown variable");
}
}
}