質問の文脈は次のとおりです。私はwgetがダウンロードしようとしているファイルをつかみたいと思うかもしれませんが、表示されるかもしれないかもしれないフラグを無視する必要があります。例えば、 。 wget -qO http://google.com/myfile.sh
。予想される出力はhttp://google.com/myfile.sh
です。この例では、正規表現:大括弧内の正規表現の保存順序
r'wget\s-\w+\s([^\s]*)'
と思われます。ただし、フラグがない場合は動作しません。
フラグが機能しないようにするには、私が試みたのはr'wget\s[-\w+\s]?([^\s]*)'
だと思いますが、「ダッシュのインスタンスにはいくつかの文字が続くことが予想されます」と言いたいと思っていましたが、 -\w+\s
の順序は次のような結果の私の説明があること、少なくともオプションです:
import re
re.search(r'wget\s-\w+\s([^\s]*)','wget -qO http://google.com/myfile.sh').group(1)
>>> 'http://google.com/myfile.sh'
re.search(r'wget\s[-\w+\s]?([^\s]*)','wget -qO http://google.com/myfile.sh').group(1)
>>> 'q0'
re.search(r'wget\s[-\w+\s]*([^\s]*)','wget -qO http://google.com/myfile.sh').group(1)
>>> '://google.com/myfile.sh'
誰かが最後の二つの結果を説明し、それが0以上のフラグと一致していることを確認する方法を示していますができますか?
aq '(?: - \ w +)'はどういう意味ですか?特にあなたのリンクが説明していない最初の '(?:')なぜこのグループはあなたのリンクにキャプチャされていないと記述されているのですか? –
https://regex101.com/r/rDGnb6/2 – Maslo