我想用“*”替换“组织”中的开始两个字母“或”,使用python的re.sub函数。我读了一些关于正则表达式的书,说\b
代表字边界,所以我用\bor
作为模式。但我得到了:有关python字边界的正则表达式模式
>>> re.sub("\bor","*","organization")
'organization'
>>>
我想我应该得到* ganization。什么是问题,我应该如何使用重新模式来获得我想要的?谢谢。
我想用“*”替换“组织”中的开始两个字母“或”,使用python的re.sub函数。我读了一些关于正则表达式的书,说\b
代表字边界,所以我用\bor
作为模式。但我得到了:有关python字边界的正则表达式模式
>>> re.sub("\bor","*","organization")
'organization'
>>>
我想我应该得到* ganization。什么是问题,我应该如何使用重新模式来获得我想要的?谢谢。
这里需要使用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'
>>>
在正则表达式,使用^
这样的意思是“匹配字符串的开始”。
以下是另一种使用内置replace
函数进行此操作的方法。
string = "organization"
print string.replace(string[:2], "*")
请勿使用图片。以纯文本格式输入。 – Plasmarob
我强烈建议您尝试在http://regexpal.com上检查您的RegEx – rdodev