关于python中单词边界的正则表达式模式

时间:2013-11-22 23:05:36

标签: python regex

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

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

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

2 个答案:

答案 0 :(得分: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'
>>>

在Regex中,使用^就像这样意味着“匹配字符串的开头”。

答案 1 :(得分:0)

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

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