noa*_*ale 2 python regex string django replace
让我们说,例如,我有字符串:
s = 'Back in BLACK, I hit the sAck, I've been too LOng I'm glad to be back.'
Run Code Online (Sandbox Code Playgroud)
在上面的字符串中,我想用不区分大小写的方式用以下单词搜索和替换某些单词
黑色:b***
麻袋:s***
长:l***
很高兴:g***
我希望得到的字符串
s = 'Back in B****, I hit the s***, I've been too L*** I'm glad to be back.'
Run Code Online (Sandbox Code Playgroud)
基本上上面的字符串保留了我要替换的单词的第一个字母的情况.单词后面的字母将以' * '表示
我假设我需要列出一些替换列表.在Django中,我目前正在使用replace_all()函数,但它区分大小写.因此,对于像BLACK和sAck这样的单词,由于有许多组合,这将成为一项艰巨的任务!
我该怎么做呢?
使用re模块,这里是"黑色"的简短示例:
>>> import re
>>> s = "Back in BLACK, I hit the sAck, I've been too LOng I'm glad to be back."
>>> regex = re.compile(r'black', flags=re.IGNORECASE)
>>> regex.sub('b***', s)
"Back in b***, I hit the sAck, I've been too LOng I'm glad to be back."
Run Code Online (Sandbox Code Playgroud)
要保留第一个字母的大小写,请将其捕获并在替换中使用后向引用:
>>> regex = re.compile(r'(b)lack', flags=re.IGNORECASE)
>>> regex.sub(r'\1***', s)
"Back in B***, I hit the sAck, I've been too LOng I'm glad to be back."
Run Code Online (Sandbox Code Playgroud)
要在一次通过中完成所有替换:
>>> regex = re.compile(r'(?=(.))(?:black|sack|long|glad)', flags=re.IGNORECASE)
>>> regex.sub(r'\1***', s)
"Back in B***, I hit the s***, I've been too L*** I'm g*** to be back."
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |