2016-06-09 91 views
0

我正在寫一個簡短的腳本,它將使用字符串作爲正則表達式或字典鍵。我想將所有這些數據保留在字符串中,但不需要在另一個變量中指定它們中的哪一個。什麼字符不能以正則表達式開頭?

我決定使用字符串的第一個字符來指定它是正則表達式還是字典鍵。因爲我不想認爲有可能用?開始一個正則表達式,我使用它。

tests = (
    r'\d+', 
    '?test' 
) 

values = { 
    "test": "Success!" 
} 

for test in tests: 
    if test.startswith('?'): 
     print(values.get(test[1:])) 
    else: 
     print(re.match(test, '123').string) 

我是否正確假設正則表達式可能永遠不會以?字符開頭?其他字符(在QWERTY鍵盤上出現)無法啓動正則表達式?

+2

如何爲_both_使用某些前綴,例如'「Dtest」'和'「R \ d +」'並將其作爲正則表達式使用時刪除第一個字符? –

+1

你可以使用'\?'來轉義它 –

+0

正則表達式元字符是'。^$ * +? {} [] \ | ()'。 –

回答

1

任何重複字符(?,*,+)在這裏都是一個不錯的選擇,因爲它們必須以某種其他模式開頭。 $只能用於非平凡正則表達式的末尾,所以它也是一個不錯的選擇。 }])必須遵循其開放等價物,因此也可以使用。

+0

但是不能有一些「原諒ing「的正則表達式解析器」很好,這不能是正則表達式元字符']'在這個第一個位置,所以我只是假設它是一個文字']'「?編輯:事實上,Python的're'模塊似乎正是這樣做的......'''','?'和'+'似乎工作,但有沒有保證?一些「官方」正則表達式引用? –

+0

當然,Python可能會接受具有這種古怪的正則表達式,但它不是沒有它們就無法生存。 – kindall

相關問題