0

式があり、Python2.6で抽出したいと思います。次に例を示します。

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

これは次のようになります。

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

リストが必要です。手を貸してください。ありがとう。

4

2 に答える 2

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', ')']
于 2011-07-27T09:52:39.150 に答える
1

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',
 ')']
于 2011-07-27T09:52:49.727 に答える