首页 > 解决方案 > 如何使用正则表达式仅获取操作数

问题描述

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

例如:A + B应该还给我+

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

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

任何线索我做错了什么?

标签: phpregexpreg-split

解决方案


正如 Wiktor 所说,您最好使用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) "+"
}

推荐阅读