我對Python很新,對於正則表達式來說還是比較新的。 (我沒有Perl的經驗。)如何提高我的Python正則表達式語法?
我能夠使用正則表達式的方式,但我不確定我的代碼是特別Pythonic或consise。例如,如果我想讀一個文本文件並打印出在每行中的'foo'和'bar'之間直接出現的文本(假設這發生了一行或零行),我會寫如下:
fileList = open(inFile, 'r')
pattern = re.compile(r'(foo)(.*)(bar)')
for line in fileList:
result = pattern.search(line)
if (result != None):
print result.groups()[1]
有沒有更好的方法?需要if
以避免在None
上撥打groups()
。但我懷疑有一個更簡潔的方式來獲得匹配的字符串,當沒有錯誤時不會拋出錯誤。
我不希望Perl類似不可讀。我只想以最簡單最普通的方式完成這項共同任務。
出於某種原因,'result.group(1)'爲我捕獲'foo',但'result.group(2)'工作。 – 2010-03-29 10:12:16
@FarmBoy:因爲你用'(foo)(。*)(bar)'而不是'foo(。*)bar'匹配。 – kennytm 2010-03-29 12:46:15
元組索引不是基於0的嗎?我期待'result.group(0)'會在我的代碼中返回'foo'。 – 2010-03-29 16:01:35