Python 仅替换模式中的第二个引用
假设我有一个字符串:Python 仅替换模式中的第二个引用,python,regex,Python,Regex,假设我有一个字符串: 'hello$ world$ $' 如何仅删除第二次出现的$ 或者如果我有str'ing'h 如何使用re.sub()仅删除第二个撇号? 无需编写一个大而长的函数将其分解为每个字符,即可找到所有撇号等的索引。您可以使用以下正则表达式: >>> import re >>> s = 'hello$ world$ $' >>> print ( re.sub(r'^([^$]*\$[^$]*)\$', r'\1:', s) )
'hello$ world$ $'
如何仅删除第二次出现的$
或者如果我有str'ing'h
如何使用re.sub()
仅删除第二个撇号?
无需编写一个大而长的函数将其分解为每个字符,即可找到所有撇号等的索引。您可以使用以下正则表达式:
>>> import re
>>> s = 'hello$ world$ $'
>>> print ( re.sub(r'^([^$]*\$[^$]*)\$', r'\1:', s) )
hello$ world: $
正则表达式详细信息:
:开始^
:启动捕获组#1(
:匹配0个或多个非[^$]*
$
:匹配一个\$
$
:匹配0个或多个非[^$]*
$
:结束捕获组#1)
:匹配一个\$
$
s = re.sub(r"^([^']*'[^']*)'", r'\1:', s)
您可以使用此正则表达式:
>>> import re
>>> s = 'hello$ world$ $'
>>> print ( re.sub(r'^([^$]*\$[^$]*)\$', r'\1:', s) )
hello$ world: $
正则表达式详细信息:
:开始^
:启动捕获组#1(
:匹配0个或多个非[^$]*
$
:匹配一个\$
$
:匹配0个或多个非[^$]*
$
:结束捕获组#1)
:匹配一个\$
$
s = re.sub(r"^([^']*'[^']*)'", r'\1:', s)
如果你表现出你的努力,那么你会得到更好的答案。我已经尝试过了,一切都是什么感觉。我花了整整1.5个小时在一个测试上,试图找出一个答案,但没有找到。相信我,我知道这不是最好的问题。但是有人能回答这个问题吗?如果你表现出你的努力,那么你会得到更好的答案。我已经尝试过了,一切都是什么感觉。我花了整整1.5个小时在一个测试上,试图找出一个答案,但没有找到。相信我,我知道这不是最好的问题。但是有人能回答这个问题吗?这很好,我能问一下为什么在捕获组之外的模式部分被替换而不是捕获组吗?…捕获组之外的部分是你要替换的,所以必须在捕获组之外。这很好,我可以问一下,为什么在捕获组之外的部分被替换而不是捕获组?…捕获组之外的部分是您要替换的部分,因此必须在捕获组之外。