本文介绍了使用PHP将字符串拆分为数字和字符数组的Regex的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似于以下模式的算术字符串。

a. 1+2+3
b. 2/1*100
c. 1+2+3/3*100
d. (1*2)/(3*4)*100

需要注意的是
1.字符串不会包含空格。
2.字符串将始终是数字、算术符号(+、-、*、/)和字符‘(’和‘)’的组合

我正在寻找PHP中的正则表达式,以便根据字符的类型拆分字符,并形成如下所示的单个字符串字符的数组。
(注意:我不能使用STR_Split,因为我希望不拆分大于10的数字。)

A.1+2+3
输出=>[
0 => '1'
1 => '+'
2 => '2'
3 => '+'
4 => '3'
]

B.2/1*100
输出=>[
0 => '2'
1 => '/'
2 => '1'
3 => '*'
4 => '100'
]`

c.1+2+3/3*100

输出=>[
0 => '1'
1 => '+'
2 => '2'
3 => '+'
4 => '3'
5 => '/'
6 => '3'
7 => '*'
8 => '100'
]`

d.(1*2)/(3*4)*100

输出=>[
0 => '('
1 => '1'
2 => '*'
3 => '2'
4 => ')'
5 => '/'
6 => '('
7 => '3'
8 => '*'
9 => '4'
10 => ')'
11 => '*'
12 => '100'
]

提前谢谢您。

推荐答案

使用此正则表达式:(?<=[()/*+-])(?=[0-9()])|(?<=[0-9()])(?=[()/*+-])

它将匹配数字或圆括号和运算符或圆括号之间的每个位置。
(?<=[()/*+-])(?=[0-9()])在左侧用括号或运算符匹配位置,在右侧用数字或括号匹配
(?<=[0-9()])(?=[()/*+-])相同,但左右颠倒。

演示here

这篇关于使用PHP将字符串拆分为数字和字符数组的Regex的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 06:50