描述
我有一个正则表达式结果Match match
,我想将其组解析为如下部分:
- 跳过第一组,
- 将第二组分配给变量
instruction
, - 将其他所有内容分配给变量
args
。
在 JavaScript 中,它看起来像这样:
const match = /example/.exec(`example`);
if (match === null) return;
const [, instruction, ...args] = match;
我想在 C# 中进行相同的解构:
Match match = new Regex(@"example").Match("example");
if (!match.Success) return;
(_, Group instruction, Group[] ..args) = match.Groups;
问题
我听说最新版本的 C# 添加了很多语法糖,甚至..
.我尝试了一下,到处都是错误。
如何才能完成这种解构呢?
您可以使用模式匹配,即列表模式。
然而,这有点笨拙,因为它需要在
if
/条件运算符中使用switch
。您可以简单地使用索引访问和 LINQ:
您可以使用命名组。
(?<НазваниеГруппы>метасимволы)
例如,该组由 表示(?<FirstWord>\\w+)\\s(?<SecondWord>\\w+)
- 连续数量的字母数字字符(至少一个),然后是空格,然后是任何连续数量的字母数字字符(至少一个)。该组是通过接受字符串参数 yGroupCollection
(propertyGroups
) 的索引器访问的。示例代码:由于
ToString
类中该方法的重载版本,您甚至可以这样做Capture
:关于解构对象,该类
GroupCollection
没有定义方法Deconstruct
,因此无法执行您想要的操作。如果你想进行某种定制,那么它将是一个拐杖,它看起来像这样: