2012-01-06 47 views
0

我有蟒蛇如下字符串:正則表達式在Python 2.4

"\\B1\\B1xxA1xxMdl1zzInoAEROzzMofIN" 

我想要得到的字符串作爲

"B1xxA1xxMdl1zzInoAEROzzMofIN" 

,我認爲這是可以做到使用正則表達式,但不能達到它然而。請給我一個主意。

+0

蟒4 ??????? – Mansuro 2012-01-06 07:54:36

+0

Python 4 ??這裏是Python 4嗎? – 2012-01-06 07:55:18

+0

對不起,我更新了這個問題。我的意思是Python 2.4。再次抱歉。 – gishara 2012-01-06 07:57:02

回答

3
st = "\B1\B1xxA1xxMdl1zzInoAEROzzMofIN" 
s = re.sub(r"\\","",st) 
idx = s.rindex("B1") 
print s[idx:] 

輸出= 'B1xxA1xxMdl1zzInoAEROzzMofIN'

OR

st = "\B1\B1xxA1xxMdl1zzInoAEROzzMofIN" 
idx = st.rindex("\\") 
print st[idx+1:] 

輸出= 'B1xxA1xxMdl1zzInoAEROzzMofIN'

+0

這些對我來說看起來有點太特殊。如果源爲「123 \\ 456 \\ 789」' - 那麼這兩個解決方案都不會給123789結果。 – 2012-01-06 08:15:21

+0

他的例子是特定的,所以我帶着這個特定的解決方案。我認爲他正面臨着這個特定字符串的問題。 – RanRag 2012-01-06 08:22:45

+0

非常感謝RanRag。第二個解決方案是我需要的。 – gishara 2012-01-06 09:59:33

3

這裏是一個嘗試:

import re 
s = "\\B1\\B1xxA1xxMdl1zzInoAEROzzMofIN" 
s = re.sub(r"\\[^\\]+\\","", s) 
print s 

測試在http://py-ide-online.appspot.com(不能找到一種方法,雖然共享)

[編輯]對於一些解釋,看看在Python regex documentation page和這太問題的第一個註釋:

How to remove symbols from a string with Python?

,因爲使用括號[]可以是棘手的(IMHO)

在這種情況下,裝置[^\\]任何但兩個反斜槓\\

所以[^\\]+意味着匹配任何不是兩個反斜槓\\一個或多個字符。

+0

你可以選擇'\ w',它們可能不是字符,爲什麼不用'[^ ​​\\] +'替換'\ w *'?然後你會有一個普通的模式 – fge 2012-01-06 08:40:22

+0

@fge:謝謝你的建議,我用你的代碼編輯了我的答案(我花了一些時間去檢查這個,因爲我對Python Regex並不熟悉) – JMax 2012-01-06 08:50:36

0

如果字符串中所需的部分總是在一個\炭的RHS然後可以使用:

string = "\\B1\\B1xxA1xxMdl1zzInoAEROzzMofIN" 
string.rpartition("\\")[2] 

輸出= 'B1xxA1xxMdl1zzInoAEROzzMofIN'