这个问题是关于何时将左侧的数字(例如1
、-13
等)与右侧的变量(例如x
、x_12
等)相乘
例如'1y'
应转换为1*y
,'123y4'
应转换为'123*y4'
,但'x_12y'
不应更改(因为'x_12y'
是有效的变量名,所以不应转换为'x_12*y'
)
我尝试了以下操作,这也错误地将'x_12y'
转换为'x_12*y'
:
re.sub(r'([\d]+)([a-zA-Z_]+\w*)', r'\1*\2', '1y + x_12y + 123y4')
>> '1*y + x_12*y + 123*y4'
如果我像下面这样做一个反向查找,我仍然得到与上面相同的结果
re.sub(r'(?<![a-zA-Z_])([\d]+)([a-zA-Z_]+\w*)', r'\1*\2', '1y + x_12y + 123y4')
>> '1*y + x_12*y + 123*y4'
我尝试过搜索和其他一些方法,但仍然没有成功(对不起,我在正则表达式方面相对缺乏经验)
任何帮助都将不胜感激,谢谢
你可以用
\b
单词边界(\d+)
在组1中捕获1+个数字([a-zA-Z]+\d*)
在组1中匹配1+字符a-z,后跟可选数字\b
单词边界Regex demo
输出
相关问题 更多 >
编程相关推荐