根据单词中的位置将相同的字符转换为不同的字符

时间:2011-05-27 08:05:20

标签: python regex

我非常感谢咖啡研磨机几个小时前向我提问。既然我是其中一员,我想稍微改一下这个问题。

使用正则表达式和python声明单词首字母's'转换为'$'并且's'的其余部分转换为'5'的最佳方式是什么?

我尝试在以下代码中执行此操作,但结果是错误的。 's'转换的一般规则是贪婪的,并没有给出单词初始的'规则发挥作用。 我很感激任何帮助。感谢。

text = 'sassy'

for (regexp,subst) in [ (r's', '5'),(r'^s', '$') ]:

  text = re.sub(regexp,subst,text)

...

text

5A55y

1 个答案:

答案 0 :(得分:2)

你只是不够具体。你需要在第一个上使用非零的lookbehind断言。

>>> text = 'sassy'
>>> for (regexp,subst) in [ (r'(?<=.)s', '5'),(r'^s', '$') ]:
...   text = re.sub(regexp,subst,text)
... 
>>> text
'$a55y'

那,或者改变顺序。

当你的一个替换进入另一场比赛时,所有投注都已经结束。