2017-10-19 200 views
1
import re 
big_string = "Some random //words to [email protected]@ out //[email protected]@ 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將始終具有相同的長度。這段代碼看起來效率不高,必須有一個更簡單或者更有價值的方法才能達到相同的結果?任何建議將不勝感激。查找字符串中的2個預定字詞之間的所有字符

回答

1

答案很簡單:can be seen here

\/\/(.*?)@@ 

我們逃脫/以防萬一,然後捕獲一個//@@之間(的())的一切,並使用非貪婪?,使我們得到每一個短跨度,而不僅僅是單一的長跨度。

單線:

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

返回:

['words to test', 'the'] 
+0

萬分感謝! – Chrisp

相關問題