正则表达式:匹配“ComponentNumber_componentName_componentPart(可选)”

时间:2014-07-09 15:02:50

标签: c# regex

我对以下正则表达式匹配有困难:

" ComponentNumber_componentName_componentPart(可选)"

Where" ComponentNumber"是一个字母后跟一个无限长的数字,直到第一次出现" _",然后" componentName"是任何一组文本,也可能包含多个" _" '第直到我们看到决赛#34; _"它只包含附加的可选文本。

有人可以帮忙吗?

E.g。有效条目:

Y1122334455_Component_Text_Optional_Values

Q00998877_CompName1_Optional

S77889911_CName_1_Test_Optional_Values_2

当你看到"可选"作为第三个" _"

之后的任何指标

由于

2 个答案:

答案 0 :(得分:1)

这是一个可以帮助你入门的正则表达式:

([a-zA-Z]\d+)_(.+)_(\w+)

它执行以下操作:

Regex visualisation

这将匹配以下内容:

 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)

正如我在您的问题评论中提到的,您似乎无法区分ComponentNameComponentPart,因为它们用下划线分隔,并且两者都可能包含下划线。

根据您的回复,您将使用如下模式:

(?'ComponentNumber'[A-Za-z]\d+)_(?'ComponentName'.+)

Regex Diagram

ComponentNumber与第一个下划线后的所有内容匹配为ComponentName