在 python 中使用 re 替换字符串前后

replace before and after a string using re in python

我有这样的字符串'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'@'

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

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

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

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

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

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

希望这对你有用:

import re

input_text = "approved:rakeshc@IAD.GOOGLE.COM"

out = re.search(':(.+?)@', input_text)
if out:
    found = out.group(1)
    print(found)

你可以使用这条线:

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

输出:

rakeshc