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
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.