首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在某些文本之后和连字符之前提取减法(regex)

在某些文本之后和连字符之前提取减法(regex)
EN

Stack Overflow用户
提问于 2022-10-25 13:56:24
回答 3查看 45关注 0票数 -2

我有一份与类似模式相匹配的电子邮件列表:

chris-repo-nonprod red-sens@mail.com

ryan-prod-blue-sens@mail.com

第一封电子邮件有5个部分,第二个部分在@mail.com之前有4个部分(用连字符标记)

我需要提取在组邮件的非prod/prod部分之后出现的group_code。

例如,chris-repo-nonprod red -sens@mail.com,我需要提取红色,

对于ryan-prod sens@mail.com,我需要提取蓝色。

组代码之前的部分将始终是prod或nonprod,而且在组代码之前始终有减去"prod-“的内容。

如何从有不同数量的电子邮件中提取组代码以始终获取组代码?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-25 14:00:32

代码语言:javascript
复制
re.findall('(?:prod-)(.*)-', s)
代码语言:javascript
复制
df['group'] = df['col2'].str.extract('(?:prod-)(.*)-' )
df
代码语言:javascript
复制
    col1    col2                                    group
0   1       chris-repo-nonprod-red-sens@mail.com    red
1   2       ryan-prod-blue-sens@mail.com            blue
2   3                                               NaN
票数 1
EN

Stack Overflow用户

发布于 2022-10-25 14:07:39

使用寻找与发现

代码语言:javascript
复制
email2 = 'ryan-nonprod-blue-sens@mail.com'
email = 'chris-repo-nonprod-red-sens@mail.com'

start = 'prod-'
start2= 'nonprod-'
end = '-'

print( (email[email.find(start or start2)+len(start or start2):email.rfind(end)]))
print("\n")

输出

代码语言:javascript
复制
red
票数 0
EN

Stack Overflow用户

发布于 2022-10-25 15:15:49

这应该是可行的

代码语言:javascript
复制
(?<=prod-)[a-z]+

基于我们拥有的输入数据

代码语言:javascript
复制
chris-repo-nonprod-red-sens@mail.com
ryan-prod-blue-sens@mail.com

注意到在搜索字符串前面总是有nonprodprod,我们可以使用regexp断言。在本例中,正向后向断言(?<=prod-)中,我们定义在任何单词a-z+之前寻找prod-

注意:断言不是结果的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74195244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档