2016-12-02 100 views
0

我需要從字符串中獲取'主要'子字符串。我使用Python,我認爲正則表達式可以幫助我。我要開始在單詞匹配,並停止在字符串在以後的地步,不再有字符串中的任何單詞使用正則表達式從字符串中選擇主要子字符串

那麼匹配,例如:

" , ? -- Mr. Smith . ? " -> "Mr. Smith" 

" New ------- York " -> "New ------- York" 

這顯然不是這樣醜陋任何我會使用這個,但我希望它得到了點,我需要它匹配的第一個單詞,然後停止匹配後的字符串中的最後一個單詞,但它需要包含每個字符之間的這兩個

如果有人能幫忙,謝謝!

回答

1

猜測'\w.*\w'應該工作

>>> re.search(r'\w.*\w', " , ? -- Mr. Smith . ? ").group(0) 
'Mr. Smith' 
+0

字符串'A'不匹配 – Aserre

+0

@Aserre是的,你說得對。然後無所事事,只能接受你的回答:) –

+0

但你可以使用'\ b。* \ w' –

1

你可以試試下面的正則表達式

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

TEST IT HERE

它捕獲,然後1或0 1個或多個單詞字符(\w+)發生模式.*\w(0個或多個字符,末尾有單詞字符)。 (?: ...)語法表示一個非捕獲組。

輸出示例:

, ? -- Mr.. Smith . ? --> Mr.. Smith 
" New ------- York " --> New ------- York 
a      --> a 
('(a::'---'   --> a 
?..-t- !    --> t 
1

你可以做到這一點很簡單的正則表達式沒有:

from string import punctuation 

s = " , ? -- Mr. Smith . ? " 
print(s.strip(punctuation + ' ') 

輸出是:

'Mr. Smith' 

對於字符串" New ------- York ",輸出爲'New ------- York'