私は少し前に質問をしました ( Python が不明な文字列をスペースと括弧で分割する) は、考え方を変えなければならないまでうまくいきました。私はまだ正規表現を理解していないので、これについて助けが必要です。
ユーザーがこれを入力した場合:
new test (test1 test2 test3) test "test5 test6"
次のような変数への出力のようにしたいと思います。
["new", "test", "test1 test2 test3", "test", "test5 test6"]
つまり、スペースで区切られた 1 つの単語の場合は次の単語から分割し、括弧内にある場合は括弧内の単語のグループ全体を分割して削除します。引用符についても同様です。
私は現在、上記の基準を満たしていないこのコードを使用しています(上記のリンクの回答から):
>>>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 つではなく 1 つの分割として結合します。
また、括弧と引用符の分割を同時に使用することもできません。