如果用户键入此:
new test (test1 test2 test3) test "test5 test6"
我想它看起来像输出到变量是这样的:
["new", "test", "test1 test2 test3", "test", "test5 test6"]
换句话说,如果它是一个单词由一个空格分隔,然后将它与下一个单词分开,如果它在括号中,则将整个单词分组在括号中并将其删除。引号也一样。
我目前使用此代码不符合上述标准(从上面的链接的答案):
>>>import re
>>>strs = "Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>>[", ".join(x.split()) for x in re.split(r'[()]',strs) if x.strip()]
>>>['Hello', 'Test1, test2', 'Hello1, hello2', 'other_stuff']
这种运作良好,但有一个问题,如果你有这样的:
strs = "Hello Test (Test1 test2) (Hello1 hello2) other_stuff"
它将Hello和Test合并为一个分裂而不是两个。
它也不允许同时使用圆括号和引号拆分。
+2
看看贪婪和非贪婪匹配。 –
+0
@m?ter你有链接可以引导我学习指导吗?我发现的大多数问题都是关于它的问题,并不能真正帮助我,而且我也无法阅读python文档。如果剩下的就只剩下它了。 –
+0
对不起,我误解了这个问题。但是,这里有一个官方教程的链接:http://docs.python.org/2/library/re.html –
12220750