Python中不区分大小写的字符串替换

Python中不区分大小写的字符串替换,python,replace,case-insensitive,Python,Replace,Case Insensitive,为了进行多个不区分大小写的字符串替换,我使用了regex模式,例如 import re text = "Mentioning of reD, GrEen and BLUE is prohibited" new_text = re.sub(r'(red|green|blue)', "***", text, flags=re.IGNORECASE) print(new_text) 从列表中创建模式(而不是手动输入)的最佳方法是什么 谢谢您的回复 可以使用管道

为了进行多个不区分大小写的字符串替换,我使用了regex模式,例如

import re
text = "Mentioning of reD, GrEen and BLUE is prohibited"
new_text = re.sub(r'(red|green|blue)', "***", text, flags=re.IGNORECASE)
print(new_text)
从列表中创建模式(而不是手动输入)的最佳方法是什么


谢谢您的回复

可以使用管道角色进行连接

"|".join(["red", "green", "blue"])
如果单词本身具有
|
或其他可能会破坏模式的元字符,则此操作可能会失败。正则表达式注入攻击。。。造句

import re
text = "Mentioning of reD, GrEen and BLUE is prohibited"
words_to_replace = ["red", "green", "blue"]
new_text = re.sub(f'({"|".join(words_to_replace)})', "***", text, flags=re.IGNORECASE)
print(new_text)

你的例子中有轻微的拼写错误。应该是
“|”。加入([“红色”、“绿色”、“蓝色”)
import re
text = "Mentioning of reD, GrEen and BLUE is prohibited"
words_to_replace = ["red", "green", "blue"]
new_text = re.sub(f'({"|".join(words_to_replace)})', "***", text, flags=re.IGNORECASE)
print(new_text)