首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字符(如果不是第一个字符)

匹配字符(如果不是第一个字符)
EN

Stack Overflow用户
提问于 2018-11-06 08:21:35
回答 1查看 317关注 0票数 2

我不得不从一个列表中提取出方程,然后用运算符符号(左和右)将它们分开。我遇到的问题是,第一个或第二个角色可能是负面的,也可能不是消极的。

例如:

代码语言:javascript
复制
$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-它经常将它分开,它就不能准确地分割它。如果第二个是负的,减去它就不会把负数取出来。因此,我试图确定一个正则表达式,严格按照操作符将它们分开。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 10:14:29

似乎您可以在数字后面的运算符符号上拆分。

使用

代码语言:javascript
复制
$list = preg_split ('~(?<=\d)[-+×÷*/]~u', $number);

这个regex演示(?<=\d)是一个正的查找,它匹配紧跟在数字前面的位置,然后[-+×÷*/]匹配字符类中的任何一个字符。

或者,在更一般的情况下,字界可能就足够了:

代码语言:javascript
复制
$list = preg_split ('~\b[-+×÷*/]~u', $number);

regex演示。在这里,符号将只匹配字母,数字和_

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53168145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档