python - 分别替换同一字符串的多次出现

标签 python regex

我正在尝试按顺序替换 re.findall 的结果。但是,在该示例中,同一个字符串多次出现。例如:

text = "SOME TEXT, monday-friday, MORE TEXT, thursday, MORE TEXT, monday-friday'
regex = re.compile(REGEX,re.I)
possiblereplacements = regex.findall(text)

结果是:

'monday-friday','thursday','monday-friday'

然后我需要分别替换列表中的每个元素。例如:

for item in possiblereplacements:
    text = re.sub(item,item+' 11:00-17:00',text)

然而,这会替换所有实例,因此最终您会得到:

 text = "SOME TEXT, monday-friday 11:00-17:00 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00 11:00-17:00'  

我如何调整它以获得我想要的结果:

 text = "SOME TEXT, monday-friday 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00'        

最佳答案

单次替换有什么问题?您不需要在这里使用 re.findall 函数。只需将您的正则表达式放在一个捕获组中,并将所有匹配的字符替换为组索引 1 中的字符加上您要连接的字符串。

re.sub(r'(regex)', r'\1 11:00-17:00', text)

例子:

>>> text = "SOME TEXT, monday-friday, MORE TEXT, thursday, MORE TEXT, monday-friday"
>>> re.sub(r'(?i)([^,]*day[^,]*)', r'\1 11:00-17:00', text)
'SOME TEXT, monday-friday 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00'

关于python - 分别替换同一字符串的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561044/

相关文章:

python - 如何使用 Flask 选择多个复选框并插入到 MySql 中

python、正则表达式、命名组和 "logical or"运算符

regex - 如何使这个 .htaccess 规则不区分大小写?

Python 正则表达式 MULTILINE 找不到任何东西

python - 从条件开始计算行数

python - 使用 Cassandra python 驱动程序修改模型的键空间/表

python - 使用 slurm 在网格上运行 helloworld.py 程序

python - 不要用完列表索引的最佳方法

python - 使用正则表达式从字符串中提取文本

javascript - 解析 CSS 背景图像和选择器