我想解析输入字符串,如下所示:
client/02004C4F4F50/box/registration
client/02004C4F4F50/box/data/flow
使用.NET正则表达式库。 client
和box
始终相同,但其余内容可能不同。
我提出的是这个正则表达式:
^client/(?<id>.+?)/box/(?<type>.+)(/(?<value>.+)?)
我想要的是registration
和data
与type
组匹配,flow
进入可选组value
。
它应该是这样的:
Groupname | Input 1 | Input 2 --------------------------------------- id | 02004C4F4F50 | 02004C4F4F50 type | registration | data value | {empty} | flow
但是使用我当前的解决方案,可选组(value
)永远不会匹配。
也许有人有提示。
答案 0 :(得分:1)
您可以使用[^/]+
模式(除了/
char之外的任何1个字符)匹配子部分,并使编号的捕获组而不是value
命名的捕获组可选,即{{ 1}} =&gt; (/(?<value>.+)?)
(另外,您可以将捕获组变为非捕获组,或使用(?n)
inline ExplicitCapture
modifier使所有捕获组都表现为非捕获组。)
您可以使用
(?:/(?<value>.+))?