【发布时间】:2019-09-27 20:15:44
【问题描述】:
我有以下正则表达式:
(?:\/(?<root>family-resources|employer-resources|newsroom|text-pages))?\/(?:(?<path>[0-9A-z=\-\s]+\/?)+)
如您所见,我正在尝试设置两个命名捕获组 - root 和 path。但是,在运行此程序并检查匹配组时,没有 root 组 - 只有 path。
使用 C#:
root = match.Groups["root"]?.Value ?? "Text Pages"; // Returns an empty string as the root group is missing.
我能够通过在https://regex101.com/ 上运行正则表达式模式来重现这一点。
如果您输入以下测试字符串:
/sitecore/content/Corporate-New/home/employer-resources/back-up-care
你会注意到你只得到一个命名的捕获组 - path。
为什么root 没有被退回?
似乎我对命名捕获组使用了正确的语法。我已经尝试在捕获组之外和正则表达式模式内添加括号,但都没有奏效。我在想也许正则表达式模式没有被理解。
【问题讨论】:
标签: c# regex regex-group named-captures