目前我有以下正则表达式:
!include <(.*)>
并给出以下输入:
## Heading
Some text
!include <mykey>
## Heading 2
Some more text
!include <mykey2>
More text
我得到!include <mykey>
匹配捕获mykey
和!include <mykey2>
匹配捕获mykey2
,这正是我想要的。
但是现在我希望<>
标记是可选的,所以给出以下输入:
## Heading
Some text
!include mykey
## Heading 2
Some more text
!include <mykey2>
More text
我希望获得相同的捕获。 我尝试过以下方法:
!include <?([^<>]*)>?$
但它不起作用,任何帮助都将不胜感激。
我已经尝试了@ pedro-lobito回答,但我在$ 1组中获得了额外的>
。
这是我正在运行的代码:
var includeRegex = new Regex("!include\\s+<?(.+?)>?$",
RegexOptions.Compiled | RegexOptions.Multiline);
var input = @"
## Heading
Some text
!include <mykey>
## Heading 2
Some more text
";
var match = includeRegex.Match(input);
Console.WriteLine(match.Groups[1].Value); // Outputs mykey>, it should be mykey