1

我希望在一个字符串中列出包含在表达式“cat_”和“dog”之间的元素,如下所示:

input=...snake_perrot_cat_expression dog...
output='expression'

我希望返回“表达式”。我尝试使用正则表达式,但我缺乏知道如何正确编写它的经验......

identifi=[]
for line in file:
    identi=re.findall(r'cat_.*?dog', line)
    identifi.append(identi)

它返回一个空列表...欢迎任何帮助。

4

2 回答 2

3

在要查找的模式周围加上括号:

    indentifi.extend(re.findall(r'cat_(.*?)dog', line))

例如,

In [137]: import re

In [138]: line = '...snake_perrot_cat_expression dog...'

In [142]: re.findall(r'cat_(.*?)\s*dog', line)
Out[142]: ['expression']

\s*已添加,因此尾随空格将不匹配。)

于 2013-07-29T21:59:17.427 回答
0

如果每行只有一个“猫”和“狗”,并且“猫”排在第一位,我可以建议一个不使用正则表达式的解决方案:

print inpu.split('cat_')[1].split('dog')[0]
于 2013-07-29T21:59:59.090 回答