我正在逐行搜索一个文件,以查找## 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