我正试图转向:
[quote]Hello![/quote]
进入:
<div class="quoted-text">Hello!</div>
这个代码是我最接近工作的代码:
var r = new Regex(@"[quote]([^]]+)[/quote]", RegexOptions.Multiline | RegexOptions.IgnoreCase);
rawComment = r.Replace(rawComment, "<div class="quoted-text">$1</div>");
然而,对于嵌套引号,它的出现并不正确。它似乎只是转换了内心最深处的语录。一个测试用例是:
[quote]
test
[quote]
nest
[quote]
nest
[/quote]
[/quote]
[/quote]
结果是:
[quote]
test
[quote]
nest
<div class="quoted-text">
nest
</div>
[/quote]
[/quote]
有人能告诉我如何按预期工作吗?
我看不出为什么需要将引号解析为块。因此,最简单的解决方案是用您想要的令牌替换每个令牌。下面是LinqPad的一个例子:
void Main()
{
var rawComment =
"[quote]n" +
" testn" +
" [quote]n" +
" nestn" +
" [quote]n" +
" nestn" +
" [/quote]n" +
" [/quote]n" +
"[/quote]n";
var start = new Regex(@"[quote]", RegexOptions.IgnoreCase);
var end = new Regex(@"[/quote]", RegexOptions.IgnoreCase);
rawComment = start.Replace(rawComment, "<div class="quoted-text">");
rawComment = end.Replace(rawComment, "</div>");
rawComment.Dump();
}
这会产生以下内容:
<div class="quoted-text">
test
<div class="quoted-text">
nest
<div class="quoted-text">
nest
</div>
</div>
</div>