仅替换模式中的第二次出现
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)
以上是关于仅替换模式中的第二次出现的主要内容,如果未能解决你的问题,请参考以下文章
每个字符串每出现第 2 次,分别用文件的第 n 行替换两个不同的字符串