我试图找到第一个字母数字子字符串,并从匹配的字母数字字符串开始截断字符串
test=k8s-configuration-int-mbus_config-int-mbus-deployment-db9c64cd-n4tww_central_6d499584
这里第一个字母数字字符串是-db9c64cd-
(也可以是-9dbc64cd-
)
现在我希望子字符串为k8s-configuration-int-mbus_config-int-mbus-deployment
尝试了两个类似regex的re.sub(r'-[a-z0-9]*-.*', r'', test)
,但没有成功。有办法做到这一点吗
你可以用
见this regex demo和this Python demo
或者,采用拆分方法:
见Python demo和regex demo
正则表达式详细信息
^
-字符串的开头.*?
-除换行符以外的任何零个或多个字符,尽可能少(?=
-积极前瞻的开始:-
-a-
字符(?:[A-Za-z]+[0-9]|[0-9]+[a-zA-Z])
-一个或多个ASCII字母和一个数字,或一个或多个数字和一个ASCII字母[0-9a-zA-Z]*
-零个或多个字母数字ASCII字符-
-a-
字符)
-前瞻的结束李>使用
re.sub
方法:RegEx Demo
正则表达式解释:
(?i)
:启用忽略大小写模式-
:匹配连字符(?:[a-z]+\d[a-z\d]*|\d+[a-z][a-z\d]*)
:匹配字母数字字符串-
:匹配连字符.*
:匹配字符串的其余部分-(?:[a-zA-Z]+\d[a-zA-Z\d]\d+[a-zA-Z][a-zA-Z\d])-*
也应该起作用
刚刚增加了资本A-Z
基本上,使用sub,我们提取字符串中不匹配的部分,即抑制匹配的值并仅拾取不匹配的数据
这是一种反向分析
感谢@anubhava
相关问题 更多 >
编程相关推荐