.net正则表达式可选命名组
我想解析如下所示的输入字符串:.net正则表达式可选命名组,.net,regex,regex-group,.net,Regex,Regex Group,我想解析如下所示的输入字符串: 客户机/02004C4F40/box/注册 客户端/02004C4F40/box/data/flow 使用.NET正则表达式库客户端和框始终相同,但其余部分可能不同。 我想到的是这个正则表达式: ^client/(?。+)/box/(?。+)(/(?。+)?) 我想要的是将注册和数据匹配到类型组中,流进入可选组值。 应该是这样的: Groupname | Input 1 | Input 2 ------------------------------
客户机/02004C4F40/box/注册
客户端/02004C4F40/box/data/flow
使用.NET正则表达式库<代码>客户端和框
始终相同,但其余部分可能不同。
我想到的是这个正则表达式:
^client/(?。+)/box/(?。+)(/(?。+)?)
我想要的是将注册
和数据
匹配到类型
组中,流
进入可选组值
。
应该是这样的:
Groupname | Input 1 | Input 2
---------------------------------------
id | 02004C4F4F50 | 02004C4F4F50
type | registration | data
value | {empty} | flow
组名|输入1 |输入2
---------------------------------------
id | 02004C4F40 | 02004C4F40
类型|注册|数据
值|{empty}|流
但在我当前的解决方案中,可选组(值
)从未匹配。
可能有人有一个提示。您可以使用
[^/]+
模式(除/
字符以外的任何1+字符)匹配子部分,并将编号的捕获组而不是值
命名的捕获组设置为可选,即(/(?+)
=(?:/(?+)?)?
(此外,您可以将捕获组转换为非捕获,或使用使所有捕获组都表现为非捕获)
你可以用
^client/(?<id>[^/]+)/box/(?<type>[^/]+)(?:/(?<value>[^/]+))?
^client/(?[^/]+)/box/(?[^/]+)(?:/(?[^/]+)?
看
使用此
^client/([A-Z\d]+)/box/(.+)
并用|
分割最后一组数据/流
Demo@AnkushRathi如果OP可以分割,OP就不会要求正则表达式解决方案。请参见.NET正则表达式库。@WiktorStribiżew这将注册
放入值
组。但我明白你的意思了!@WiktorStribiż是的,我明白了,我的坏蛋你是说你需要什么?