查找字符串中2个预定单词之间的所有字符

时间:2017-10-19 04:06:42

标签: python-2.7 performance findall

import re
big_string = "Some random //words to test@@ out //the@@ code with"
array = []
x = [m.start() for m in re.finditer('//', big_string)]
y = [n.start() for n in re.finditer('@@', big_string)] 
for i in range(len(x)):
    array.append(big_string[x[i]+2:y[i]])
print array
#output = ['words to test', 'the']

上面的代码运行正常,你可以看到它在一个更大的字符串中找到2个字符串('//'和'@@')之间的单词。我们可以假设x和y总是具有相同的长度。这段代码看起来效率不高,必须有一种更简单或更智能的方法来实现相同的结果?任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

简单回答can be seen here

\/\/(.*?)@@

我们逃避/以防万一,然后捕获(()//@@之间的所有内容,并使用非贪婪的?所以我们得到每一个短距离,而不仅仅是单个长跨度。

单行:

re.findall('//(.*?)@@', big_string)

返回:

['words to test', 'the']