式があり、Python2.6で抽出したいと思います。次に例を示します。
[a]+[c]*0.6/[b]-([a]-[f]*0.9)
これは次のようになります。
(
'[a]',
'+',
'[c]',
'*',
'0.6',
'/',
'[b]',
'-',
'(',
'[a]',
'-',
'[f]',
'*',
'0.9',
')',
)
リストが必要です。手を貸してください。ありがとう。
式があり、Python2.6で抽出したいと思います。次に例を示します。
[a]+[c]*0.6/[b]-([a]-[f]*0.9)
これは次のようになります。
(
'[a]',
'+',
'[c]',
'*',
'0.6',
'/',
'[b]',
'-',
'(',
'[a]',
'-',
'[f]',
'*',
'0.9',
')',
)
リストが必要です。手を貸してください。ありがとう。
>>> 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', ')']
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',
')']