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