2012-07-01 26 views
0

我想根據變量的值進行正則表達式搜索。Python 3,正則表達式重複和str.format() - 什麼是正確的方法?

在Py2.x這個作品非常好:

pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals()) 

當我嘗試將它移植到新的str.format()符號我得到的是這樣的:

pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length)) 

這給我一個錯誤,因爲重複的大括號與str.format()中的大括號混淆了:

ValueError: Single '}' encountered in format string 

我敢肯定喲你可以考慮更多像這樣的格式()與重複衝突的例子。

通過str.format()爲regexp的重複提供外部值的正確方法是什麼? %運算符在Py3中不起作用。

回答

2

只使用舊版本 - % Python 3.x仍然支持字符串格式,它不會消失。如果你堅持使用新的語法,加上不顯示字段的大括號:

pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length)) 
+0

謝謝。首先,我用%符號得到語法錯誤。現在它工作正常;)感謝與雙大括號的提示! – minder

相關問題