Regex 匹配字符(如果不是第一个字符)
我必须从列表中取出方程,并通过运算符符号(左和右)将它们分开。 我遇到的问题是第一个或第二个字符可能是否定的,也可能不是否定的 例如:Regex 匹配字符(如果不是第一个字符),regex,Regex,我必须从列表中取出方程,并通过运算符符号(左和右)将它们分开。 我遇到的问题是第一个或第二个字符可能是否定的,也可能不是否定的 例如: $number = "-7.89-2.45"; preg_split ('/[\+\-×÷\*\/]+/', $number); //expect: [0]=>-7.89 [1]2.45 $number = "7.89-2.45"; preg_split ('/[\+\-×÷\*\/]+/', $number); //expect: [0]=>7.
$number = "-7.89-2.45";
preg_split ('/[\+\-×÷\*\/]+/', $number);
//expect: [0]=>-7.89 [1]2.45
$number = "7.89-2.45";
preg_split ('/[\+\-×÷\*\/]+/', $number);
//expect: [0]=>7.89 [1]2.45
$number = "-7.89--2.45";
preg_split ('/[\+\-×÷\*\/]+/', $number);
//expect: [0]=>-7.89 [1]-2.45
但问题是,如果第一个字符是a,它就不能准确地将其拆分-它会将其拆分为多个字符。如果第二个是负数,减去它就不会得出负数。
因此,我试图确定一个正则表达式,以严格按运算符拆分它们。似乎可以根据数字后面的运算符符号进行拆分 使用
看。在这里,符号仅在字母、数字和
之后匹配,并尝试(?!^-[-+×**\/]+
,这似乎是可行的,但看看它,当表达式的第二个数字为负数时,它会遇到问题。Ie:36.24--24.58那么,你的期望是什么?请将所有细节添加到问题中。我已更新了问题以使其更加清晰,新问题是我没有预料到的。请尝试“~\b[-+×÷*/]~u”
$list = preg_split ('~(?<=\d)[-+×÷*/]~u', $number);
$list = preg_split ('~\b[-+×÷*/]~u', $number);