2013-06-21 66 views
1

捕獲是否有可能寫一個正則表達式的公式,可以捕捉一個以上的字字符加-通過#含鉛,但如果#是在與空格分隔的多個單詞的末尾,則捕獲整個文字之間的開頭和結尾#可選閉合符號和若干個字與正則表達式

我相信我的代碼更容易比我的介紹就明白了:

import re 

s = """ 
this is a dummy #text with some #dummy_short-tags 
and a #full length long tag# that has closing symbol. 
""" 

print re.findall(r'#([\w-]+)', s) 
# --> ['text', 'dummy_short-tags', 'full'] 
print re.findall(r'#(.+)?(?<!\s)#', s) 
# --> ['full length long tag'] 

我可以將二者結合起來的正則表達式以上的人嗎因此,我可以避免同時捕獲「完整」和「全長標籤」,而且我的目標是將捕獲的文本視爲一種數據類型。

在此先感謝!

回答

3

使用交替:

re.findall('#([\w\s]+\w(?=#)|[\w-]+)', s) 

輸出

['text', 'dummy_short-tags', 'full length long tag'] 
+1

這正是我一直在尋找!非常感謝你,這是一個美麗的正則表達式! –