$re = '/^([A-z]+)(?: *= *)(\d+|[A-z]+)$/m';
$str = 'Expression validator
^((?:[A-z]+)|((-|\\+)?\\d+))( +(\\++|-+) +((?:-?\\d+)|(?:[A-z]+)))*$
Assignment validator
^([A-z]+)(?: *= *)(\\d+|[A-z]+)$
c= a
8
8 + 4
-2 + 4 - 5 + 6
9 +++ - 10 -- 8
9 --- + 10
9 --- -10
9 +++ -10 -- 8
3 --- 5
14 - 12
-3 2
name = 44
a = 5
capName = 6 + 4
capName = 6
n = 3
m=4
a = 5
b = a
v= 7
n =9
c= a
A variable can have a name consisting of more than one letter.
count = 10
To print the value of a variable you should just type its name.
N = 5
N
5
It should be possible to set a new value to an existing variable.
a = 1
a = 2
a = 3
a
3
If an identifier or value of a variable is invalid, the program must print a message like the one below.
a1 = 8
Invalid identifier
n = a2a
Invalid assignment
a = 7 = 8
Invalid assignment
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php