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

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)” -> “(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


犯罪嫌疑人X
浏览 92回答 1
1回答

HUH函数

一种查看方式是,您希望在任何字符,数字或右括号()之间放置一个,后跟一个左括号(),或任何右括号,后跟一个字符,数字或左括号;中间有一些空格。您可以为此目的使用前瞻,捕获组 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python