2015-10-18 85 views
1

,是否有可能在列表的同一索引中列出两个随后出现的*号?Python re.findall使用re.findall *和**

可以说我有str = "2**3 + 2*3"我想在列表中显示为

lis = re.findall('[\+\-*/()]', str) 

lis = [2, **, 3, +, 2, *, 3] 

有像*|**一些正则表达式?

回答

2

在char类之后使用+,它重复上一个标记一次或多次。

lis = re.findall(r'[-+*/()]+|\d+', string) 

lis = re.findall(r'[A-Za-z\d]+|[^\w\s]+', string) 

实施例:

>>> s = "2**3 + 2*3" 
>>> re.findall(r'[-+*/()]+|\d+', s) 
['2', '**', '3', '+', '2', '*', '3'] 
>>> re.findall(r'[A-Za-z\d]+|[^\w\s]+', s) 
['2', '**', '3', '+', '2', '*', '3'] 

你可以使用re.split也,

>>> re.split(r'\s*([-+*/()]+)\s*', s) 
['2', '**', '3', '+', '2', '*', '3']