python 分割字符串的正则表达式

python regular expression to divide a string

我需要像这样分割一个字符串:

{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 开始,为此,我必须跳过解决方案。

如有错误,请多多包涵。我来自巴西。

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

提前致谢。

亚历山大

由 Google 译者翻译。

我知道评论已经被过滤掉了,所以我提出了一个简单的解决方案,不确定它是否最"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']

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