前一段時間我問了一個問題(Python splitting unknown string by spaces and parentheses),這很好地工作,直到我不得不改變我的思維方式。我仍然沒有掌握正則表達式,所以我需要一些幫助。用括號分割Python的字符串
如果用戶鍵入此:
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合併爲一個分裂而不是兩個。
它也不允許同時使用圓括號和引號拆分。
看看貪婪和非貪婪匹配。 – XORcist
@möter你有鏈接可以引導我學習指導嗎?我發現的大多數問題都是關於它的問題,並不能真正幫助我,而且我也無法閱讀python文檔。如果剩下的就只剩下它了。 – TrevorPeyton
對不起,我誤解了這個問題。但是,這裏有一個官方教程的鏈接:http://docs.python.org/2/library/re.html – XORcist