2015-10-18 57 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']