my_file中的句子以单词后跟数字开头,例如“ City1”,并且my_file中还有另一个句子以“ City2”开头时,以下代码仅返回第一句话:

description = re.findall("\n"+i+"[\s\,\d\(].*\.\n", my_file) #i equals 'City'
if description:
        for d in description:
            d = d.replace('\n', ' ')
            bufferlist.append(d)
            bufferlist[:] = unique( bufferlist ) #unique is a function removing duplicates from a list while keeping its order
            my_string = ' '.join(bufferlist)
            del bufferlist[:]
else:
        my_string = '0'


为什么不能同时在my_string中得到第一句话和第二句话?

编辑
问题或部分原因是del bufferlist[:]。这阻止了每次迭代中所需的比赛堆积。循环后必须删除bufferlist

最佳答案

(?:^|(?<=\n))City[\s\,\d\(].*\.(?=\n|$)


尝试此操作。您正在消耗\n,可能无法将其留给他人匹配。

参见演示。

https://regex101.com/r/VIXyar/1

关于python - Re.findall仅返回Python 2.7中的第一个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42396384/

10-11 20:25