2012-05-18 165 views
9

我對正則表達式並不熟悉,如果有人使用正則表達式給出解決方案可以解釋它們的語法,所以我可以將它應用於將來的情況,這將是非常好的。從字符串中刪除單詞的第一次出現?

我有一個字符串(即'Description: Mary had a little lamb'),我想刪除'Description: '使得字符串會讀'Mary had a little lamb,'但只有第一個實例,例如,如果字符串是'Description: Description',新的字符串將'Description.'

任何想法?謝謝!

+0

待辦事項你知道第一個實例將始終在字符串的開頭? –

回答

25

Python的str.replace有一個max替換參數。所以,你的情況,這樣做:

>>>mystring = "Description: Mary had a little lamb Description: " 
>>>print mystring.replace("Description: ","",1) 

"Mary had a little lamb Description: " 

使用正則表達式基本上是完全一樣的。首先,讓你的正則表達式:

"Description: " 

因爲Python是相當不錯的正則表達式左右,它只是你想在這種情況下刪除的字符串。就這樣,要在應用re.sub,其中也有一個計數變量使用它:

>>>import re 
>>>re.sub("Description: ","",mystring,count=1) 
'Mary had a little lamb Description: ' 
+1

你不需要指定第三個參數,因爲它默認爲1 –

+3

@omu_negru不,不。它默認爲所有的事件。 – jamylak

+0

@omu_negru它不默認爲1,它默認爲...沒有我猜。如果你沒有第三個參數,它將會取代所有的實例,而不僅僅是第一個實例。 – Josiah

0

使用regex只需在re.sub中指定計數參數爲1。雖然在這種情況下似乎不需要regex

>>> import re 
>>> text = 'Description: Mary had a little lamb' 
>>> re.sub('Description: ','',text,1) 
'Mary had a little lamb' 
+1

啊,好的,謝謝你的幫助! – zhuyxn

+0

我可以問一下count參數在做什麼? – song0089

+0

@ song0089只有1個替代品 – jamylak

2

此正則表達式將用於任一「字」,而不只是「描述:」

>>> import re 
>>> s = 'Blah: words words more words' 
>>> print re.sub(r'^\S*\s', '', s) 
words words more words 
>>> 
+0

如果你只是想刪除字符串中的第一個單詞,是不是隻使用「」.join(s.split(「」)[1:])? – Josiah

+4

@Josiah,最好是's.partition(「」)[2]'。 – Duncan

相關問題