首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修改deal表达式以处理空白空间

如何修改deal表达式以处理空白空间
EN

Stack Overflow用户
提问于 2020-03-26 02:39:10
回答 1查看 75关注 0票数 0
代码语言:javascript
运行
复制
import re
def addMultiplication(input1): 
    return re.sub(r'([^-+*/])\(', r'\1*(', input1)

我有一个函数,只要有括号表示乘法,我就会取一个字符串并添加乘法符号。

这里的一些例子(这项工作):

  • "4(3)“-> "4*(3)”
  • (4)(3)“-> "(4)*(3)”
  • "4*2 +9-4(-3)“-> "4*2 +9-4*(-3)”
  • (-9)(-2) (4)“-> "(-9)*(2) *(4)”
  • 4^(3)“-> "4^(3)”
  • "(4-3)(4+2)“-> "(4-3)*(4+2)”
  • “-> "(Aflkdsjalkb)*(g)”
  • "g(d)(f)“-> "g*(d)*(f)”
  • (4) (3)“-> "(4)*(3)”

下面是一些我失败的例子(因为添加了空格),箭头指向我的代码的输出,最右边,用粗体表示的是我想要的:

  • "(4)* (3)“-> "(4) ** (3)”x "(4)*(3)"
  • "( 4-3 * (2)“-> "4-3* * (2)"

注意,我必须在上面的两个例子中添加一些额外的空格,因为否则它会保持斜体化和格式化。因此,基本上,如果我去掉了上面两个例子中的空白,它就能工作,但是当我在星号后面留下一个空格时,它就会出现故障。

我将如何将额外的空格合并到regrex表达式中?我试过使用\s,但我不确定它是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-26 02:57:56

查看这一点的一种方法是,您希望在任何字符、数字或结束括号())之间加上一个开始括号((),或者在任何结束括号后面加上一个字符、数字或开始括号;中间有一定数量的空格。为此,您可以使用“外观”,在第1组中捕获初始字符/数字/括号:

代码语言:javascript
运行
复制
([a-z0-9)](?= *\()|\)(?= *[a-z0-9(]))

然后,您可以用\1*替换它。注意,您应该使用re.IGNORECASE (不区分大小写,也是re.I)标志,以便它可以用于表达式(如A(B) )。

基于regex101的演示

在python中:

代码语言:javascript
运行
复制
def addMultiplication(input1): 
    return re.sub(r'([a-z0-9)](?= *\()|\)(?= *[a-z0-9(]))', r'\1*', input1, 0, re.IGNORECASE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60860258

复制
相关文章

相似问题

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