python - 仅替换模式中的第二次出现
问题描述
假设我有一个字符串:
'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)
推荐阅读
- java - Android Wear:从 java 调用“默认健身应用”
- python - 正则表达式python:仅查找第二个和第三个字符串模式
- javascript - 我想知道使用'while循环'的'array'的长度,但代码显示错误
- python - 查找最长的相邻重复非重叠子串
- c++ - C++ libcurl 多线程
- anaconda - 安装 conda-accelerate 时出错
- javascript - JS中的计算操作计数器
- ios - 将滚动方向从垂直更改为水平时,Collectionview App 崩溃
- typescript - Vue绑定数据和$set
- c++ - Dev c++ mingw 不再编译