仅替换模式中的第二次出现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅替换模式中的第二次出现相关的知识,希望对你有一定的参考价值。

说我有一个字符串:

'hello$ world$ $'

如何仅删除第二次出现的$

或者如果我有str'ing'h

我如何使用re.sub()仅删除第二个撇号?无需编写将其分解为每个字符的大型long函数,即可找到所有撇号的索引,等等。

从字面上看,在一本开放书/开放式网络考试中,互联网死了。无法为我的生活弄清楚。请帮助

[注意:请不要通过链接其他没有特别回答的问题来结束此问题。

答案

您可以使用此正则表达式:

>>> import re
>>> s = 'hello$ world$ $'
>>> print ( re.sub(r'^([^$]*$[^$]*)$', r'1:', s) )
hello$ world: $

RegEx详细信息:

  • [^:开始
  • (:开始捕获组#1
    • [[^$]*:匹配0个或多个不是$]的字符>
    • [$:匹配一个$
    • [[^$]*:匹配0个或多个不是$]的字符>
  • [):结束捕获组#1
  • [$:匹配一个$
  • 将其用于第二个问题是替换第二个单引号:

    s = re.sub(r"^([^']*'[^']*)'", r'1:', s)
    

    以上是关于仅替换模式中的第二次出现的主要内容,如果未能解决你的问题,请参考以下文章

    如何替换第二次出现的点

    在循环中替换每一个大行中的第 n 个出现

    用另一个列表替换主活动中的列表并从视图中删除旧列表

    每个字符串每出现第 2 次,分别用文件的第 n 行替换两个不同的字符串

    iframe 调整大小在 Mozilla Firefox 中的第二次加载期间不起作用

    我的回收站视图第二次未在片段中显示