0

我有一个表达式,我想在 python 2.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

一种方法是创建一个正则表达式列表来匹配每个标记,例如:

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 回答