我正在逐行搜索一個文件,以查找## random_string ##的出現。它的工作原理除了多個#的情況下...Python正則表達式匹配:## ##
pattern='##(.*?)##'
prog=re.compile(pattern)
string='lala ###hey## there'
result=prog.search(string)
print re.sub(result.group(1), 'FOUND', string)
所需的輸出:
"lala #FOUND there"
相反,我得到下面的,因爲它抓住了整個###哎##:
"lala FOUND there"
那麼我怎麼會忽略任何數量的#開頭或結尾,只捕捉「## string ##」。
請小心使用像'(。*?)'這樣的惰性量詞,因爲它會匹配'## abC#####'並捕獲'abC###'。還有懶惰的量詞很慢。 – glebm 2010-10-23 01:20:18