Как получить только операнды с регулярным выражением
Я пытаюсь извлечь только операнды, а именно. + - /
а также *
из моего арифметического выражения.
Например: A + B
должен вернуть меня +
Я попытался использовать следующие несколько RegEx, но я всегда получаю массив с 3 элементами:
Выражение № 1:
print_r (var_dump(preg_split ( "/([\w\s]*[^\-\+\/\*])/", "A+B" )), TRUE);
Выход:
array(3) {
[0] =>
string(0) ""
[1] =>
string(1) "+"
[2] =>
string(0) ""
}
Выражение № 2:
print_r (var_dump(preg_split ( "/(?!\+|\-|\*|\/)[\w\s]+/", "A+B" )), TRUE);
Выход:
array(3) {
[0] =>
string(0) ""
[1] =>
string(1) "+"
[2] =>
string(0) ""
}
Я просто хочу +
подписать как вывод.
Любая подсказка, что я делаю не так?
2 ответа
Решение
Как сказал Виктор, вам лучше использовать preg_match, но если вы действительно хотите использовать preg_split, используйте флаг PREG_SPLIT_NO_EMPTY
и упростим ваше регулярное выражение:
print_r (var_dump(preg_split ( "/[\w\s]/", "A+B", -1, PREG_SPLIT_NO_EMPTY )), TRUE);
Выход:
array(1) {
[0]=>
string(1) "+"
}
Вы можете использовать preg_match_all:
preg_match_all ( "/([\^\-\+\/\*])/", "A+B", $result );
$result = $result[0];
print_r($result);
Результат:
Array ( [0] => + )