2016-10-28 7 views
0

Pythonのアマチュア:変数の使用ここ

私は正規表現で遊んでいる、と私はこれに遭遇しました:

import re 

while True: 
    userInput = input('Type in your string here: ') 
    regexInput = input('Enter Regex pattern here:') 

    testRegex = re.compile([^regexInput]) 
    testMO = testRegex.search(userInput) 
    print(testMO.group()) 

は基本的に、私は私の正規表現はすべてを一致させたいですregexInputで指定したパターンは例外です。しかし、私はこのコードから構文エラーを取得しています。私は、文字クラスの開始括弧の直後にニンジンを置くと、Pythonが括弧内にあるもの以外のものをすべて検索することを意味すると思いましたか? 私は退屈な事を自動化する第7章の最後のプロジェクトをやっています。 regexInputに入力されたもの以外のものと一致するようにコードを取得するにはどうすればよいですか?

"[^" + regexInput +"]" or "[^{}]".format(regexInput)

私は本当に完全に、この返信を理解していない、特に第二部:あなたは、文字列を作成する必要がありますので

正規表現は、文字列を期待:

誰かが私にこのことを告げました答えのただ、彼が言ったことをテストするために、私はこのコードを使用:私の出力ました

import re 

while True: 
    userInput = input('Type in your string here: ') 
    regexInput = input('Enter Regex pattern here:') 

    testRegex = re.compile(regexInput) 
    testMO = testRegex.search(userInput).group() 
    print(testMO) 

Type in your string here: Here lies Batman. 
Enter Regex pattern here:Batman 
Batman 
Type in your string here: 

これは正規表現はまた、変数を取って、それを作ったという意味ではありません作業?だから私は、この別の人が言ったことについて混乱しています。「regexは文字列を期待しています」との声明と矛盾するようです。

+0

短い答え: 'input'は文字列を返します。文字列はリテラルコードとは異なります。これは構文エラーを投げていたものです。 – BallpointBen

+2

これは声明と矛盾しません。 'input()'は文字列を返します。あなたの2つのコード例は同等ではありません。 Pythonで文字列を作成するにはいくつかの方法があります。リテラルテキスト*を引用符で囲む*は入力ストリームから読み込みます( 'input() 'を使用)。 – cdarke

+0

あなたの出力にどのような結果が期待されますか? – augurar

答えて

0

[^regexInput]は、構文的に有効なPython式ではありません。文字[^、変数regexInputの後に文字]が続く文字列を作成しようとしているようです。これをPythonで書く方法の1つは'[^' + regexInput + ']'です。

関連する問題