php - preg_split 将所有结果捕获到数组中

标签 php regex delimiter preg-split

我对 php 中的函数 preg_split 有疑问

我的正则表达式是

#^(-?[0-9]+)(([+x])(-?[0-9]+))*$#

我想要例如转换:

-5+69x45

在这样的数组中

{
[0] = -5
[1] = +
[2] = 69
[3] = x
[4] = 45
}

我使用 preg_match 的正则表达式和数学

但是使用 preg split 我没有我的数组

我有一个没有标志或的空数组

{
[0] = -5
[1] = x
[2] = 45
}

带有标志 PREG_SPLIT_DELIM_CAPTURE

我的错误在哪里?

最佳答案

我认为你误解了 preg_split

您定义的模式用于拆分字符串,但这意味着与您的模式匹配的字符串部分不会包含在结果数组中。

通过使用标志 PREG_SPLIT_DELIM_CAPTURE 捕获组的内容被添加到结果数组 ( preg_spit doc )。

#^(-?[0-9]+)(([+x])(-?[0-9]+))*$#
            ^^^^^^^^^^^^^^^^^^

但是你在最后两个组周围有一个量词,这意味着 $2 和 $3 只是存储的最后一个匹配项,并且这个组的第一个匹配项“+69”被覆盖,所以在你的情况下你得到

$1 = -5
$2 = x
$3 = 45

关于php - preg_split 将所有结果捕获到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9262750/

相关文章:

php - Laravel Valet 安装后 Ping test.dev 返回 "Unknown Host"

php - 从 PayPal 链接发票

python - 使用 python 正则表达式去除特征

sql - 将 sql 结果导出到 CSV 时如何在单个单元格中使用逗号分隔值

sorting - 如何按字母顺序对逗号分隔的单元格 Google 表格进行排序?

php - 如何在 MySQL 中存储 GMaps API 反向地理编码响应(使用 PHP)?

javascript - 帮助 javascript 正则表达式向某些字符添加反斜杠(如果尚不存在)

javascript - 注册按钮 HTML CSS JavaScript

python - 在联接中轻松替换分隔符

php - RadiPanel DJ 面板违规错误