Как сделать так, чтобы функцией 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");
        }
    }
}

Ответы (0 шт):