2017-09-27 9 views
1

のPythonインタプリタの解決の正規表現

arg='' 

for i,a in enumerate(sys.argv): 
    if(i!=0): 
     arg+=a+" " 

私は引数を印刷する場合、私は、シェルの引数マイナススクリプトの名前

を見ることができますし、それは大丈夫でした

file.h file2.h .... filen.h 

私の質問は、私は非解決コマンドラインを得ることができる方法ですが、.hiは、インタプリタは、この私のためのルールとAIは見ることができますdispite * .hの印刷を解決することを使用正規表現の行を発見した*場合文字列?

答えて

2

スクリプトをコマンドラインから呼び出すと、globが解決され、結果がpythonスクリプトに渡されます。

globをコマンドラインで解決しない場合は、ワイルドカード*からエスケープしてください。

シェルは、*をワイルドカードの意味に展開しています。

可能な解決策は、正確な*.h文字列を受け取るスクリプトにコマンドラインから"*.h"'*.h'または\*.hを渡しています。

@SpoonMeiserは、あなたのスクリプトがこれを使って、受信内容を確認することができ、示唆したように:

echo script.py arg1 arg2 blahblah 

これは効果的グロブの拡張後にいわゆるバックプリントし、あなたに何が起こったかのアイデアを与えるだろう。また

この場合のためにグロブの概念を与えるため@SpoonMeiserのおかげで、あなたが詳細にhere

+1

この問題を示す最も良い方法は、コマンドラインに次のように入力することです: 'echo myscript.py * .h'は、スクリプトが実際に実行される前にシェルがどのように解釈するかを示します。これは正規表現ではなく、グロブであることを指摘する価値もあります。 – SpoonMeiser

+0

それは 'echo myscript.py * .h'とは思えませんでした。私は 'glob'が(今はすべてregexpと呼ばれていた)何かを知りませんでした。 – magicleon

+1

これは答えとしてマークする価値があると思います。@ P.Carlino –

2

の多くを見ることができることを私の推測では、あなたはおそらくそれをキャッチすることができないということです - スクリプトへの引数は上の解決を取得sys.argvに渡される前のレベルです。