提取表达

时间:2011-07-27 09:32:49

标签: python regex expression extract text-extraction

我有一个表达式,我想在python 2.6中提取它。这是一个例子:

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

这将:

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

我需要一份清单。请帮帮忙。感谢。

2 个答案:

答案 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', ')']

答案 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',
 ')']