2017-01-09 17 views
0

質問の文脈は次のとおりです。私は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以上のフラグと一致していることを確認する方法を示していますができますか?

答えて

1

は、以下のことを試してみてください。

wget\s*(?:-\w+)?\s*(.*) 

https://regex101.com/r/aDWM3X/1参照

のためにあなたはブラケットを使用しているので、あなたの例では、働いていなかった理由でもしながら、「次の文字または範囲のいずれかを」を意味しています\ wの後に+を使用する(これは\ wの1つ以上を意味するものではなく、任意の\ wを探すことを意味します)....グループを使用する場合は、?(ゼロまたは1)または0または無制限の場合は*

+0

aq '(?: - \ w +)'はどういう意味ですか?特にあなたのリンクが説明していない最初の '(?:')なぜこのグループはあなたのリンクにキャプチャされていないと記述されているのですか? –

+1

https://regex101.com/r/rDGnb6/2 – Maslo

関連する問題