2011-07-27 2 views
0

표현식이 있고 파이썬 2.6에서 추출하고 싶습니다. 이 것표현식 추출하기

[a]+[c]*0.6/[b]-([a]-[f]*0.9) 

:

(
    '[a]', 
    '+', 
    '[c]', 
    '*', 
    '0.6', 
    '/', 
    '[b]', 
    '-', 
    '(', 
    '[a]', 
    '-', 
    '[f]', 
    '*', 
    '0.9', 
    ')', 
) 

내가 목록 필요가 여기에 예입니다. 제발 도와주세요. 감사.

+0

계산기 등을 만들려고하십니까? –

+0

계산되지 않습니다. 예처럼 추출해야합니다. – Zeck

+0

... 일단 추출했다면 어떻게하실 건가요? –

답변

1
>>> import re 
>>> expr = '[a]+[c]*0.6/[b]-([a]-[f]*0.9)' 
>>> re.findall('(?:\[.*?\])|(?:\d+\.*\d*)|.', expr) 
['[a]', '+', '[c]', '*', '0.6', '/', '[b]', '-', '(', '[a]', '-', '[f]', '*', '0.9', ')'] 
+0

하하. 아주 간단합니다. – Zeck

1

한 가지 방법은 각 토큰을 일치하는 정규 표현식의 목록을 작성하는 것, 뭔가 같은 :

import re 
tokens = [r'\[.?\]', r'\(', r'\)', r'\+', r'\*', r'\-', r'/', r'\d+?.\d+', r'\d+'] 
regex = re.compile('|'.join(tokens)) 

그런 다음 당신이 일치하는 목록을 반환하는 표현식에 findall을 사용할 수

>>> regex.findall('[a]+[c]*0.6/[b]-([a]-[f]*0.9)') 
<<< 
['[a]', 
'+', 
'[c]', 
'*', 
'0.6', 
'/', 
'[b]', 
'-', 
'(', 
'[a]', 
'-', 
'[f]', 
'*', 
'0.9', 
')']