如何在Python中拆分重复分隔符

如何在Python中拆分重复分隔符,python,split,strsplit,Python,Split,Strsplit,我有一个字符串的格式 exp='((200+(4*3.14))/(2**3))” 我想使用re.split()将字符串分隔成标记,并包括分隔符。但是,我无法将**拆分到一起,最终被*拆分 这是我的代码:tokens=re.split(r'([+|-|**?|/|(|))),exp) 我的输出(错误): 我想问一下,有没有办法在*和***之间拆分分隔符?非常感谢你 期望输出: ['('、'('、'200'、'+'、'('、'4'、'*'、'3.14'、')、'/'、'('、'2'、'**'、'3

我有一个字符串的格式
exp='((200+(4*3.14))/(2**3))”

我想使用
re.split()
将字符串分隔成标记,并包括分隔符。但是,我无法将
**
拆分到一起,最终被
*
拆分

这是我的代码:
tokens=re.split(r'([+|-|**?|/|(|))),exp)

我的输出(错误):

我想问一下,有没有办法在
*
***
之间拆分分隔符?非常感谢你

期望输出:


['('、'('、'200'、'+'、'('、'4'、'*'、'3.14'、')、'/'、'('、'2'、'**'、'3'、')、')')]
使用[…]符号只允许指定单个字符。要获得可变大小的备用图案,需要在这些括号外使用|运算符。这还意味着您需要转义正则表达式运算符,并且需要将较长的模式放在较短的模式之前(即**之前*)

甚至更短:

tokens = re.split(r'(\*\*|[*+-/()])',exp)

使用[…]符号仅允许指定单个字符。要获得可变大小的备用图案,需要在这些括号外使用|运算符。这还意味着您需要转义正则表达式运算符,并且需要将较长的模式放在较短的模式之前(即**之前*)

甚至更短:

tokens = re.split(r'(\*\*|[*+-/()])',exp)

丑陋但简单:首先将“**”替换为任何不能显示为下划线的单个字符。然后拆分,然后替换它back@PabloHenkowski哦,耶,我从来没有想到过!非常感谢你!试试这个regexp:
r'(\*\*\*\\+\\+-\\/\\\(\\)”
(请参阅
ast
模块以获得更好的选择)@VPfB是的,这很有效!非常感谢你!丑陋但简单:首先将“**”替换为任何不能显示为下划线的单个字符。然后拆分,然后替换它back@PabloHenkowski哦,耶,我从来没有想到过!非常感谢你!试试这个regexp:
r'(\*\*\*\\+\\+-\\/\\\(\\)”
(请参阅
ast
模块以获得更好的选择)@VPfB是的,这很有效!非常感谢你!好吧这种模式真的把**放在*之前!非常感谢你!好吧这种模式真的把**放在*之前!非常感谢你!