我正在将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();
});
答案 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。