düzenli ifadeyi tanımlamada sorun

2 Cevap php

Için ortak bir normal ifadeyi tanımlamak matematiksel expression.please düzenli ifadeyi tanımlamak için nasıl

5+4
5-3
5*6
6/2

2 Cevap

Tamam, burada (hey, it's a regex!) ihtiyaç biraz daha karmaşık olabilir biri

/^\s*-?\d+(?:\.\d+)?(?:\s*[+*\/\-]\s*-?\d+(?:\.\d+)?)+(?:\s*=\s*-?\d+(?:\.\d+)?)?$/

Bir veya daha fazla operasyon, ondalık sayılar için izin verir ve isteğe bağlı olarak bir ucunda bir parçası "eşittir".

5 + 7
3 * 2 - 8
80.31 + 12 / 6
5 * 7 - 2 = 33

Şartname belirsiz, ama burada Java meta-regexing yaklaşımı kullanarak okunabilir bir regex bulunuyor.

    String regex =
        "num(?:opnum)*"
            .replace("op", "\\s*[*/+-]\\s*")
            .replace("num", "\\s*[+-]?\\d+(?:\\.\\d+)?\\s*");
    String[] tests = {
        "5+4",          // true
        "5 - 3",        // true
        "5 * 6 - 4",    // true
        "3.14159 = 0",  // true
        "A = B",        // false
        "5+ -4",        // true
        "5 * +4",       // true
        "5++5",         // true
        "5+++5",        // false
        "5+5+"          // false
    };
    for (String test : tests) {
        System.out.println(test + " " + test.matches(regex));
    }

Sayılar isteğe ondalık kısmını ve bir +/- işaretini içerebilir. Birden eşitlikler var olabilir.