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总是具有相同的长度。这段代码看起来效率不高,必须有一种更简单或更智能的方法来实现相同的结果?任何建议都将不胜感激。
答案 0 :(得分:1)
简单回答can be seen here:
\/\/(.*?)@@
我们逃避/
以防万一,然后捕获(()
)//
和@@
之间的所有内容,并使用非贪婪的?
所以我们得到每一个短距离,而不仅仅是单个长跨度。
单行:
re.findall('//(.*?)@@', big_string)
返回:
['words to test', 'the']