キーワードの後に1から3ワードをキャプチャしようとしていますが、一部のケースですべての単語が返されません。ここでは3例の文字列と予想される出力されていますキーワードの後に1から3ワードを取り出すためにPython正規表現を使用する
- は
- [ '5Hの1メートルの2S']に "5H 1メートルの2Sを待つ" "
- [ '5Hさ1m']に "5時間の1メートルを待ちます" 1mを[1m]に設定してください。
例の文字列が複雑な行の一部である可能性があるため、正規表現を使用しようとしています。これは私のコードです:
In [51]: ex = re.compile('wait (?:A\s)?(\w+\s?\w+?\s?\w+?\s?)', re.IGNORECASE)
In [52]: ex.findall("wait 5h 1m 2s")
Out[52]: ['5h 1m ']
In [53]:ex.findall("wait a 5h 1m")
Out[53]: ['5h 1m']
In [54]: ex.findall("wait 5h")
Out[54]: []
なぜ、正規表現は「待機」と2つのオプションの単語の後に単語を捕捉しませんか?