2013-11-22 128 views
-2

我想用“*”替换“组织”中的开始两个字母“或”,使用python的re.sub函数。我读了一些关于正则表达式的书,说\b代表字边界,所以我用\bor作为模式。但我得到了:有关python字边界的正则表达式模式

>>> re.sub("\bor","*","organization") 
'organization' 
>>> 

我想我应该得到* ganization。什么是问题,我应该如何使用重新模式来获得我想要的?谢谢。

+0

请勿使用图片。以纯文本格式输入。 – Plasmarob

+0

我强烈建议您尝试在http://regexpal.com上检查您的RegEx – rdodev

回答

2

这里需要使用raw-string

>>> import re 
>>> re.sub(r"\bor", "*", "organization") 
'*ganization' 
>>> 

否则,Python看到\b,它被翻译成\x08

>>> '\b' 
'\x08' 
>>> 

另一个解决方案是转义反斜线:

>>> import re 
>>> re.sub("\\bor", "*", "organization") 
'*ganization' 
>>> 

另一个(也可能是最好的)的解决办法是在地方使用^\b

>>> import re 
>>> re.sub("^or", "*", "organization") 
'*ganization' 
>>> 

在正则表达式,使用^这样的意思是“匹配字符串的开始”。

0

以下是另一种使用内置replace函数进行此操作的方法。

string = "organization" 
print string.replace(string[:2], "*")