python正则表达式来划分字符串

时间:2016-08-25 14:54:44

标签: regex python-3.x pyautogui

我需要拆分这样的字符串:

{tab 3}1/*{tab}*/30116{tab}2012{tab, 2}01{tab}{2016}enter

我想将{}

内外的部分分开

我们的想法是为要传递给python pyautogui的命令创建一个文本解释器。

结果应该是有序的,也许是带有命令和字符串的列表。

[ 'tab, 3', '130116', 'tab', '2012', 'tab, 2', '01', 'tab', '2016', 'enter']

订单很重要。 使用Regex Tester我这样做:

re.compile (ur '(\{(|.)*\})', re.MULTILINE | re.IGNORECASE)

这标记了{}之间的所有部分。但我不知道如何提取或拆分字符串。

/**/之间的部分我在获取此部分之前已正确删除。他们可以忽略它。

如果可能的话,我想用Pythonic的方法来解决这个问题。我是在python中开始的,为此,我必须跳过解决方案。

如果有任何错误,请原谅我。我来自巴西。

如果已经有其他翻译,请告诉我。

提前致谢。

亚历山大

由谷歌翻译翻译。

1 个答案:

答案 0 :(得分:1)

我理解评论将被过滤掉,所以我提出了一个简单的解决方案,不确定它是最“pythonic”但是pythonic足够容易获得。

您可以根据re.split字符使用{},然后通过调用空字符串filter删除空字符串。

import re

r="{tab 3}130116{tab}2012{tab, 2}01{tab}{2016}enter"

z = filter(lambda x : x!="",re.split("[{}]",r))

print(z)

输出:

['tab 3', '130116', 'tab', '2012', 'tab, 2', '01', 'tab', '2016', 'enter']

(可能还有其他方法可以在没有带正则表达式的过滤器部分的情况下进行,更复杂)