拆分字符串有两个条件:" +"和" - "并保持迹象

时间:2017-04-23 02:31:30

标签: php regex string split

我正在使用PHP,并尝试在所有3x^3 - 4x^2 + 2x - 3 + 5x^5 - 2x^7(减号)和-(加号)符号之间拆分此字符串:+。我尝试过使用explode(),但这只能接受一个条件(仅-+,而不是两者都有)。

我查看了preg_split()函数,并尝试使用"/+|-/"作为第一个条件的正则表达式,但它不起作用,因为+不被视为字符" +",但作为正则表达式的运算符。如何使用正确的正则表达式在-+之间拆分字符串?

更新:Sahil Gulati,谢谢你的回复。您发布的正则表达式完美无缺。然而,在阅读了symcbean的评论之后,我意识到我还需要保留这些标志。我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您应该使用此+转义\+字符,您可以在此使用此/\+|\-//[\+\-]/ 这两个正则表达式都表示+-

<?php

ini_set('display_errors', 1);
$string='3x^3 - 4x^2 + 2x - 3 + 5x^5 - 2x^7';
$segments=preg_split("/\+|\-/", $string);
print_r($segments);

答案 1 :(得分:0)

在阅读了您的问题更新后,您似乎可以在每个空白区域返回explode()

以下是单行:

$string='3x^3 - 4x^2 + 2x - 3 + 5x^5 - 2x^7';
var_export(explode(' ',$string));

输出:

array (
    0 => '3x^3',
    1 => '-',
    2 => '4x^2',
    3 => '+',
    4 => '2x',
    5 => '-',
    6 => '3',
    7 => '+',
    8 => '5x^5',
    9 => '-',
    10 => '2x^7'
)