为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改 regrex 表达式以处理空格

如何修改 regrex 表达式以处理空格

犯罪嫌疑人X 2022-09-13 20:07:39
import redef 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)” -> “(Aflkdsjalkb)*(g)”“g(d)(f)” -> “g“(4) (3)” -> “(4)*(3)”以下是我失败的一些示例(由于添加了空格),箭头指向我的代码的输出最右边,粗体是我想要的:“(4)* (3)” -> “(4) * * (3)” |“(4)*(3)”“(4-3* (2)” -> “4-3* *(2)” | 4-3 * (2)”注意 我不得不在上面的两个示例中添加一些额外的空格,否则它会保持斜体和格式。所以基本上,如果我去掉上面两个例子中的空格,它就会起作用,但是当我在星号后面留下一个空格时,它就会出现故障。如何将多余的空格合并到我的 regrex 表达式中?我尝试使用,但我不确定它是如何工作的。\s
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

一种查看方式是,您希望在任何字符,数字或右括号()之间放置一个,后跟一个左括号(),或任何右括号,后跟一个字符,数字或左括号;中间有一些空格。您可以为此目的使用前瞻,捕获组 1 中的初始字符/数字/括号:*)(

([a-z0-9)](?= *\()|\)(?= *[a-z0-9(]))

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

正则表达式101上的演示

在蟒蛇中:

def addMultiplication(input1): 
    return re.sub(r'([a-z0-9)](?= *\()|\)(?= *[a-z0-9(]))', r'\1*', input1, 0, re.IGNORECASE)



查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信