首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将隐含乘法(*)添加到Python字符串的最佳方法?

将隐含乘法(*)添加到Python字符串的最佳方法?
EN

Stack Overflow用户
提问于 2015-05-03 05:36:27
回答 2查看 644关注 0票数 1

我知道如何在使用RegEx更强大的其他语言中做到这一点,但我不确定是否使用Python。基本上我要做的是转换

代码语言:javascript
复制
(30(5-10x))+10=20

转到

代码语言:javascript
复制
(30*(5-10x))+10=20

它也很好的补充

代码语言:javascript
复制
(30*(5-10*x))+10=20

如果x前面有一个数字。

在Perl中,regex看起来类似于

代码语言:javascript
复制
/ \w+\K (?=\() | \)\K (?=\w) | \)\K (?=\() /*/

为了照顾x:

代码语言:javascript
复制
/\d\K(?=[x])/*/

如何在Python中最好地做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-03 06:06:45

我更喜欢它,就像内特做的,也就是,只是添加*,而不是把周围的字符只把他们放回去。

代码语言:javascript
复制
>>> e = '(1+2)(30(5-10x))x+10=20'
>>> re.sub('(?<=\w|\))(?=\() | (?<=\))(?=\w) | (?<=\d)(?=x)', '*', e, flags=re.X)
'(1+2)*(30*(5-10*x))*x+10=20'

这三个部分是“前”、“后”和“数字与x之间”。也许可以结合在一起,但我们可能会合并太多,所以我觉得这样做更清晰、更安全。

票数 4
EN

Stack Overflow用户

发布于 2015-05-03 06:48:56

我只试图翻译您的正则表达式,这样它们就不使用\K了。

您也可以通过匹配前面的字符来实现这一点,并在替换中使用它们作为反向引用。

代码语言:javascript
复制
/ \w+\K (?=\() | \)\K (?=\w) | \)\K (?=\() /*/

becomes 

re.sub(r'(\w+(?=\()|\)(?=\w)|\)(?=\())', r'\\1*', original )

为了照顾x:

代码语言:javascript
复制
/\d\K(?=[x])/*/

变成了

代码语言:javascript
复制
re.sub(r'(\d(?=[x]))', r'\\1*', original)

备注:

  • 我删除了空格,我想是你为了清晰起见加上的。
  • 我认为您的perl正则表达式不够具体。例如,它将把sin(x)转换为sin*(x)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30010598

复制
相关文章

相似问题

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