これはばかげた質問かもしれませんが...
次のような文があるとします。
クイックブラウンフォックス
または、次のような文が表示される場合があります。
速い茶色のキツネは怠惰な犬を飛び越えました
単純な正規表現(\ w *)は、最初の単語「The」を見つけてグループに入れます。
最初の文には、(\ w *)\ s *(\ w *)\ s *(\ w *)\ s *(\ w *)\ s *と記述して、各単語を独自のグループに入れることができますが、これは、文の単語数を知っていることを前提としています。
任意の文の各単語を独自のグループに入れる正規表現を書くことは可能ですか?(?:(\ w *)\ s *)*のように(\ w *)の各インスタンスをグループ化できると便利ですが、それは機能しません。
私はPythonでこれを行っていますが、私のユースケースは明らかに「The quick brown fox」よりも少し複雑なので、正規表現でこれを1行で実行できれば便利ですが、それが不可能な場合は、次善の策を想定します。解決策は、re.findall()などを使用してすべての一致をループすることです。
あなたが持っているかもしれない洞察に感謝します。
編集:完全を期すために、これが私の実際のユースケースと、あなたの助けを借りてそれをどのように解決したかです。再度、感謝します。
>>> s = '1 0 5 test1 5 test2 5 test3 5 test4 5 test5'
>>> s = re.match(r'^\d+\s\d+\s?(.*)', s).group(1)
>>> print s
5 test1 5 test2 5 test3 5 test4 5 test5
>>> list = re.findall(r'\d+\s(\w+)', s)
>>> print list
['test1', 'test2', 'test3', 'test4', 'test5']