0
我的任務是在C#中編寫一個解析器,將字符串轉換爲html代碼。現在,我解析使用正則表達式字符串,所以,我的代碼如下所示:正則表達式除符號外的所有字符和新行
Regex regex = new Regex(@"\n?\[s=(.*)?\](?:\n?(.*)?\n?)?\[\/s\]\n?");
MatchCollection matches = regex.Matches(CurrentPage.FAQ);
foreach (Match match in matches)
{
<div class="slider">
<div class="n">@match.Groups[1].Value</div>
<div class="tt">@Html.Raw(match.Groups[2].Value.Replace("\r", "<br />").Replace(" ", " "))</div>
</div>
}
的問題是,正則表達式\n?\[s=(.*)?\](?:\n?(.*)?\n?)?\[\/s\]\n?
只有當字符串看起來像有效。
[s=hello]This is demo text![/s]
如果在文本中有apears是一個新行,它不驗證。例如
[s=hello]
This is demo list
1. Hello world!
2. List item
[/s]
我想修改我的表達\n?\[s=(.*)?\](?:\n?((.|\n)*)?\n?)?\[\/s\]\n?
但字符串可以包含一個或多個[S]的項目,所以它會驗證它作爲一個
[s=hello](BEGINING TO VALIDATE FROM HERE)This is demo text![/s]
[s=hello]
This is demo list
1. Hello world!
2. List item
(TO HERE)[/s]
這就是爲什麼它驗證它作爲項目。