2012-01-06 46 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'