我认为我误解了小组如何在正则表达式和C#中工作.但是,我仍然想知道我想要的是否可能.
我们采取以下字符串
:::name(uploadFileName)
Run Code Online (Sandbox Code Playgroud)
哪个与表达式匹配
\A:::[a-zA-Z0-9_-]+\([a-zA-Z0-9_-]+\)
Run Code Online (Sandbox Code Playgroud)
我希望能够做的就是方便地提取出来像什么property = name,然后value = uploadFileName.
我认为,这将与组,其中发生match.Groups[0].Value会name和match.Groups[1].Value会uploadFileName.根据群体的定义,我认为这是真的:
分组构造描述正则表达式的子表达式并捕获输入字符串的子字符串.
但是,match.Groups[0].Value简直就是整个字符串:::name(uploadFileName)
第0组是整场比赛.其他匹配从1开始.然而,你的正则表达式没有捕获任何东西,因为没有未转义的括号.如果您没有附带的括号组,可以使用以下内容.为了简单起见,我建议在这里使用命名捕获:
\A:::(?<name>[a-zA-Z0-9_-]+)\((?<property>[a-zA-Z0-9_-]+)\)
Run Code Online (Sandbox Code Playgroud)
然后,您将获得结果match.Groups["name"].Value(= name)和match.Groups["property"].Value(= uploadFileName).