维基百科Infobox Parser

时间:2017-02-05 21:34:17

标签: c# regex wiki

我正在将wiki-infobox-parser转换为c#,但是我坚持使用正则表达式来解决c#,我在c#中得到的结果与我在JS中的结果相同。

这些就是那些。

var matches = text.Matches(@"(\{{(plainlist|order|bulleted|unbulleted|Pagelist)(?:\{??[^\{]*?\}}))");

我试过这个

private static MatchCollection Matches(this string self, string expr)
{
   return Regex.Matches(self, expr, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
}

但它似乎不包括所有匹配。

修改 使用自定义扩展程序:

$this->app->when(AvatarController::class)
          ->needs(ImageInterface::class)
          ->give(function () {
              return new AvatarUploader();
          });

$this->app->when(BackgroundController::class)
          ->needs(ImageInterface::class)
          ->give(function () {
              return new BackgroundImage();
          });

1 个答案:

答案 0 :(得分:0)

在您的C#代码中,text似乎是一个没有Matches方法的字符串。您需要使用Regex.Matches,实际上相同的正则表达式将起作用:

var matches = Regex.Matches(text, @"{{(order|bulleted|unbulleted|Pagelist)(.*\n)*?}}")
        .Cast<Match>()
        .Select(m => m.Value)
        .ToList();

如果您不需要2组中捕获的值,请使用非捕获组((?:...))或使用RegexOptions.ExplicitCapture option