2017-11-04 161 views
1

我有一個腳本搜索,比如說,一個字+「(」我會用:Python3:輸入命令行正則表達式

pattern = re.compile("anyword\(") 

但我希望讓用戶從進入模式字符串命令行 (視窗10)。

argp = argparse.ArgumentParser() 
argp.add_argument("-p", metavar="pattern", type=str, 
       , help="regex pattern") 
args= argp.parse_args() 
pattern = re.compile(args.p) 

但是未辦理anyword\(正常。反正有做到這一點?

我試過以下,但沒有得到我噸至re.compile(anyword\():

pattern = re.compile(bytes(args.p, "utf-8").decode('unicode_escape')) 
pattern = re.compile(str.encode(args.p).decode('unicode_escape')) 
pattern = re.compile(eval(args.p)) 
+0

你能分享輸入字符串嗎? –

+2

用戶在命令行上輸入時可能需要轉義反斜槓。 – Barmar

回答

0

我估計,這是是一個相當不錯的辦法(逃避命令行等),但這個工程:

import argparse, re 

ap = argparse.ArgumentParser() 
ap.add_argument("-p", "--pattern", required = True, help= "regex pattern") 
args = vars(ap.parse_args()) 

string = "here is someword hidden" 

if re.search(args["pattern"], string): 
    print("Found") 

當通過python task.py -p "someword.+"調用此產生

Found 
1

我已經得到了從響應的兩個好方法一google page

Dhruv直升機Kanojia(Xonshiz)寫道,使用regexEntry.py這樣的:

pattern = re.compile("{0}".format(user_input))

葉夫根尼·洛博夫簡單地使用:

pattern = re.compile("anyword[(]")

兩個工作,但Dhruv直升機的做法沒有按」 t要求用戶添加[]。