如何使用正则表达式只获取操作数

How to get only operands with regex

我试图只提取操作数即。 + - /* 来自我的算术表达式。

例如:A + B应该return我+

我尝试使用以下几个正则表达式,但我总是得到一个包含 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) ""
}

我只想要一个 + 符号作为输出。

知道我做错了什么吗?

正如 Wiktor 所说,您最好使用 preg_match, but if you really want to use 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] => + )