我有一个用户计算器,它接受数字和用户定义的变量。我的计划是将声明拆分为以空格分隔的运算符,例如'+':
import re
query = 'house-width + 3 - y ^ (5 * house length)'
query = re.findall('[+-/*//]|\d+|\D+', query)
print query # ['house-width + ', '3', ' - y ^ (', '5', ' * house length)']
Expecting:
['house-width', '+', '3', '-', 'y', '^', '(5', '*', 'house length)']
答案 0 :(得分:4)
使用re.split
在分割模式周围捕获括号似乎相当有效。只要你在模式中有捕获的parens,你分裂的模式就会保留在结果列表中:
re.split(' ([+-/*^]|//) ', query)
Out[6]: ['house-width', '+', '3', '-', 'y', '^', '(5', '*', 'house length)']
(PS:我假设从你的原始正则表达式中你想要捕获//
整数除法运算符,你不能用单个字符类做到这一点,所以我已经移动了作为特例,在字符类之外。)