我对以下正则表达式匹配有困难:
" ComponentNumber_componentName_componentPart(可选)"
Where" ComponentNumber"是一个字母后跟一个无限长的数字,直到第一次出现" _",然后" componentName"是任何一组文本,也可能包含多个" _" '第直到我们看到决赛#34; _"它只包含附加的可选文本。
有人可以帮忙吗?
E.g。有效条目:
Y1122334455_Component_Text_Optional_Values
Q00998877_CompName1_Optional
S77889911_CName_1_Test_Optional_Values_2
当你看到"可选"作为第三个" _"
之后的任何指标由于
答案 0 :(得分:1)
这是一个可以帮助你入门的正则表达式:
([a-zA-Z]\d+)_(.+)_(\w+)
它执行以下操作:
这将匹配以下内容:
Y1122334455_Component_Text_Optional_Values:
(Y1122334455, Component_Text_Optional, Values)
Q00998877_CompName1_Optional
(Q00998877, CompName1, Optional)
S77889911_CName_1_Test_Optional_Values_2
(S77889911, CName_1_Test_Optional_Values, 2)
有些东西告诉我这不是你想要的。
答案 1 :(得分:1)
正如我在您的问题评论中提到的,您似乎无法区分ComponentName
和ComponentPart
,因为它们用下划线分隔,并且两者都可能包含下划线。
根据您的回复,您将使用如下模式:
(?'ComponentNumber'[A-Za-z]\d+)_(?'ComponentName'.+)
将ComponentNumber
与第一个下划线后的所有内容匹配为ComponentName
。