在python脚本中搜索和替换字符串中的多个模式

在python脚本中搜索和替换字符串中的多个模式,python,regex,bash,Python,Regex,Bash,我正在尝试创建一个python脚本,该脚本执行以下操作: !/usr/bin/python import re str = "http-3A__camcogm.com_americanexpress.com&d=AAICaQ&c=zQ6tLaF7dShu6emFdFLQLQ&r=AfgFWq3_k20u3QSxhfE-TPsRXxWcDPc0YcZAhO55eV0&m=S_APJ9UeCnO7zAnBcvb2jKu_XvZJkrzyy0N$ print re.

我正在尝试创建一个python脚本,该脚本执行以下操作:

!/usr/bin/python
import re

str = "http-3A__camcogm.com_americanexpress.com&d=AAICaQ&c=zQ6tLaF7dShu6emFdFLQLQ&r=AfgFWq3_k20u3QSxhfE-TPsRXxWcDPc0YcZAhO55eV0&m=S_APJ9UeCnO7zAnBcvb2jKu_XvZJkrzyy0N$

print re.sub("http-3A__", "http://", str), ("&d*.*"," ", str);   
print re.sub("&d*.*"," ", str);
  • 提示用户输入字符串
  • 'hxxps://'
    'u='
  • 将“hxxp-3A”替换为“http://”
  • 将所有
    '
    替换为
    '/'
  • 删除
    '&d='
    到字符串末尾的所有字符(包括&d)
  • 提示用户输入要解码的字符串示例:

    <b>hxxps://emailfiltervendor.com/v2/url?u=</b>hxxp-3A__developer.apple.com_contact<b>_&d=AAMC-Q&c=zQ6tLaF7dShu6emFdFLQLQ&r=Omg3VPeUzekjh8aAoyWWiIblQyDVxual9qHMwJiqOpQ&m=MtC66x1fgSnrN9foA74EcYf6Ekmp0vmUDRLTGVtTQcU&s=xHGspXPb32hmzbF1rkJ2jWRvS011WqvwsU1LSM4zQdU&e=</b>
    
    我尝试了以下脚本的各种组合,但似乎无法搜索/替换1个以上的字符串(http-3a_u_u_u用于http://)。我的上一次脚本尝试包括以下内容:

    !/usr/bin/python
    import re
    
    str = "http-3A__camcogm.com_americanexpress.com&d=AAICaQ&c=zQ6tLaF7dShu6emFdFLQLQ&r=AfgFWq3_k20u3QSxhfE-TPsRXxWcDPc0YcZAhO55eV0&m=S_APJ9UeCnO7zAnBcvb2jKu_XvZJkrzyy0N$
    
    print re.sub("http-3A__", "http://", str), ("&d*.*"," ", str);   
    print re.sub("&d*.*"," ", str);
    

    请帮忙

    你可以做如下事情

    >>> val=re.sub(r'hxxps.*u=hxxp-3A__([^&]+).*', r'hxxp://\1', str)
    >>> re.sub(r'_', '/', val)
    'hxxp://developer.apple.com/contact/'
    

    关于Apple URL的第一个示例,以下代码有效:

    #!/usr/bin/env python
    
    import re
    
    string = "hxxp-3A__developer.apple.com_contact_&d=AAMC-Q&c=zQ6tLaF7dShu6emFdFLQLQ&r=Omg3VPeUzekjh8aAoyWWiIblQyDVxual9qHMwJiqOpQ&m=MtC66x1fgSnrN9foA74EcYf6Ekmp0vmUDRLTGVtTQcU&s=xHGspXPb32hmzbF1rkJ2jWRvS011WqvwsU1LSM4zQdU&e="
    
    string = string.replace('hxxps://',"u=")
    string = string.replace('hxxp-3A__','http://')
    string = string.replace('_','/')
    string = re.sub(r'&d=[\s\S]*','',string)
    
    print string
    

    您可以使用replace,这是语法:

    string.replace(str ,old, new[, max])
    
    所以对你来说,它会

    import string
    str = "your text"
    string.replace('str'hxxp-3A__','http://')
    string.replace('str','_' , '/' )
    sep = "&d="
    str.split(sep, 1)[0]
    str = str(0)
    

    您的
    str
    变量末尾缺少一个结束符