Как получить только операнды с регулярным выражением - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь извлечь только операнды, а именно.+ - / и * из моего арифметического выражения.

Например: 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 ]

0 голосов
/ 23 июня 2018

Вы можете использовать preg_match_all :

preg_match_all ( "/([\^\-\+\/\*])/", "A+B", $result );
$result = $result[0];
print_r($result);

Результат:

Array ( [0] => + )
0 голосов
/ 23 июня 2018

Как сказал Виктор, вам лучше использовать 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) "+"
}
...