我对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