2016-02-29 83 views
1

我希望將一個句子分割爲非單詞字符(不包括短劃線,可能表示連字符)的單詞列表和連續的破折號。我的意思是:「旋轉木馬」是一個字,而不是三個字; 「條件 - 但」是兩個字:刪除連續的破折號。python正則表達式 - 分割爲非單詞字符或連續短劃線,但不是單短劃線

我嘗試以下和它不工作: listofwords = [word for word in re.split('[^a-zA-Z0-9]|-{2,}',sentence)]

我可以提供一個樣品的句子: sentence = 'sample sentence---such as well-being {\t' 和期望的結果是[「樣本」,「句子」,「例如」,「如','福祉']。

+0

[regex101.com](http://regex101.com)是一個很好的正則表達式測試工具 – Martin

+0

可以在這個' - {2,} | \ s'上分割。 – lintmouse

+0

你可以做兩遍:首先,用空格替換--- ---,然後正常分割。 –

回答

2

你可以使用這個表達式:

\w+(?:-\w+)* 

RegEx Demo

代碼:

p = re.compile(r'\w+(?:-\w+)*') 
test_str = "sample sentence---such as well-being { " 

re.findall(p, test_str) 

輸出:

['sample', 'sentence', 'such', 'as', 'well-being'] 
+2

**▲**正確,快速。 – 2016-02-29 21:10:21

相關問題