2017-07-28 89 views
1

我試圖把下面的字符串分爲兩組,如下所示:Python的正則表達式匹配

groups(1) = "Hello1 Hello2 Hello3 Hello4" 
groups(2) = "Bye1 Bye2 Bye3 Bye4" 

我試圖做到這一點使用下面的代碼。但是,這兩個組別都不包含所有需要的單詞。

import re 


string = "Hello1 Hello2 Hello3 Hello4 Bye1 Bye2 Bye3 Bye4" 
pattern = r'(Hello[0-9])+\w(Bye[0-9])+' 
result = re.search(pattern, string) 
groups = result.group 
print("Group 1: {}\nGroup 2: {}".format(groups(1), groups(2))) 
+0

您不符合每個單詞之間的空格。在'[0-9]'後加'\ s +?' – Tezra

+0

不要使用短語'groups()'它是一個單獨的組。你的問題引導到'我怎樣才能將所有特定的單詞排序到一個單一的數組中。例如''Hello1 Hello2 Bye1 Hello3 Bye2 Bye3 Bye4 Hello4「' – sln

+0

看起來的答案是'(Hello [0-9] \ s)+',但是當您嘗試它時,該組將只包含Hello4。由於每次量化傳球都會清除組舊內容。更有意義的方法是'(你好[0-9](?:\ sHello [0-9])*)' – sln

回答

0

雖然與我在初始文章中使用的方法不同,但這似乎在做這項工作。

import re 


string = "Hello1 Hello2 Hello3 Hello4 Bye1 Bye2 Bye3 Bye4" 
patterns = [r'Hello[0-9]', r'Bye[0-9]'] 
results = [re.findall(patterns[idx], string) for idx in range(len(patterns))] 
print("Results:", results) 
+0

如果你可以使用PyPi'regex'模塊,你可以使用一個正則表達式來獲得類似的結果。 –

+0

[這是're'的另一種方式](http://ideone.com/I249I0)。 –