【问题标题】:replace before and after a string using re in python在python中使用re替换字符串之前和之后
【发布时间】:2021-09-24 00:59:36
【问题描述】:

我有这样的字符串'approved:rakeshc@IAD.GOOGLE.COM'

我想在 ':' 之后和 '@' 之前提取文本 在这种情况下,要提取的测试是 rakeshc

可以使用拆分方法完成 - 'approved:rakeshc@IAD.GOOGLE.COM'.split(':')[1].split('@')[0]

但我希望使用正则表达式来完成。

这是我迄今为止尝试过的。

import re
iptext = 'approved:rakeshc@IAD.GOOGLE.COM'
re.sub('^(.*approved:)',"", iptext)  --> give everything after ':'
re.sub('(@IAD.GOOGLE.COM)$',"", iptext)  --> give everything before'@'

希望得到单个表达式的结果。表达式将用于仅用中间字符串替换字符串

【问题讨论】:

    标签: python regex re


    【解决方案1】:

    这是一个正则表达式单行:

    inp = "approved:rakeshc@IAD.GOOGLE.COM"
    output = re.sub(r'^.*:|@.*$', '', inp)
    print(output)  # rakeshc
    

    上述方法是从一开始就删除所有文本,包括:,以及从@ 删除所有文本直到结束。这会留下电子邮件 ID。

    【讨论】:

      【解决方案2】:

      使用捕获组将匹配项之间的部分复制到结果中。

      result = re.sub(r'.*approved:(.*)@IAD\.GOOGLE\.COM$', r'\1', iptext)
      

      【讨论】:

        【解决方案3】:

        希望这对你有用:

        import re
        
        input_text = "approved:rakeshc@IAD.GOOGLE.COM"
        
        out = re.search(':(.+?)@', input_text)
        if out:
            found = out.group(1)
            print(found)
        

        【讨论】:

          【解决方案4】:

          你可以使用这个单行:

          re.sub(r'^.*:(\w+)@.*$', r'\1', iptext)
          

          输出:

          rakeshc
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-04-06
            • 1970-01-01
            • 1970-01-01
            • 2019-11-18
            • 2020-08-26
            • 2019-08-19
            • 2012-06-25
            相关资源
            最近更新 更多