Skip to main content
 首页 » 编程设计

python之用于多次搜索和替换的正则表达式

2025年05月04日25itcoder

我正在尝试在以下字符串中进行搜索和替换(对于多个字符):

VAR=%2FlkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA%2B7G3e8%3D& 

这些字符中的一个或多个:%3D、%2F、%2B、%23,可以在任何地方找到(字符串的开头、中间或结尾),理想情况下,我想搜索所有这些字符一次(使用一个正则表达式)并分别用 = 或/或 + 或 # 替换它们,然后返回最终字符串。

示例 1:

VAR=%2FlkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA%2B7G3e8%3D& 

应该返回

VAR=/lkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA+7G3e8=& 

示例 2:

VAR=s2P0n6I%2Flonpj6uCKvYn8PCjp%2F4PUE2TPsltCdmA%3DRQPY%3D& 

应该返回

VAR=s2P0n6I/lonpj6uCKvYn8PCjp/4PUE2TPsltCdmA=RQPY=& 

请您参考如下方法:

我不相信你需要正则表达式,但用 Python 很容易做到:

x = 'VAR=%2FlkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA%2B7G3e8%3D&' 
 
import re 
 
MAPPING = {  
    '%3D': '=', 
    '%2F': '/', 
    '%2B': '+', 
    '%23': '#', 
} 
 
def replace(match): 
    return MAPPING[match.group(0)] 
 
print x 
print re.sub('%[A-Z0-9]{2}', replace, x) 

输出:

VAR=%2FlkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA%2B7G3e8%3D& 
VAR=/lkdMu9zkpE8w7UKDOtkkHhJlYZ6CaEaxqmsA+7G3e8=&