场景:
用户可以以字符串格式将任意数量的括号对输入到等式中。但是,我需要检查以确保所有括号(
或)
都有一个相邻的乘数符号*
。因此,3(
应为3*(
,)3
应为)*3
。
我需要将所有可能的n(
替换为n*(
,将)n
替换为)*n
。
实施例:
1+5(3+4)7/2 ---> 1+5*(3+4)*7/2
正确的正则表达式是做什么的?
我在想[0-9]\( & \)[0-9]
之类的东西。
但我不知道搜索所有模式保证的完整语法要用*
insert替换。
答案 0 :(得分:0)
编辑 - 误读了这个问题。
在swift中没有看到任何正则表达式功能,所以我假设它使用了一些导入的东西(反之亦然)。
不使用高级断言,一种方法是两次传递。
通过1:
查找:([\d)])(\()
替换:$1*$2
传递2:
查找:(\))([\d(])
替换:$1*$2
答案 1 :(得分:0)
没有正则表达式的痛苦(但也许不是最美丽的解决方案):
equation = '1+5(3+4)7/2'
output = ''
for index, char in enumerate(equation):
if char == '(' and equation[index-1] != '*' or equation[index-1] == ')' and char != '*':
output += '*'
output += char
print('finally:', output)
答案 2 :(得分:0)