将\ n转换为<br/>但如果它不遵循<h2>或[h2] </h2>

时间:2011-12-22 17:19:09

标签: c# regex bbcode

我想用&lt; br /&gt;替换\ n在一个字符串中。但不是那么简单。不应该有&lt; / h2&gt;或{/ h2]在\n之前,如果要替换它。

例如,放一个&lt; br /&gt;在这个例子中“Something”和“Another thing”之间:

Something
Another thing

但在这个例子中什么都不做:

<h2>Something</h2>
<p>Another thing</p>

我提出(?<!\]|\>)\n正在研究this .NET Regex Tester。在第一个示例中找到要替换的内容,但在预期的第二个示例中找不到。但是,我无法在我的C#代码中使这个很好的正则表达式工作。以下代码替换所有\n,无论它是否遵循</h2>

Cevrilen = Regex.Replace(Cevrilen, @"(?<!\]|\>)\n", "<br />");

如果没有</h2>代码后跟中断,我该如何替换它?

2 个答案:

答案 0 :(得分:1)

(?<!(?:<\/h2>|\[\/h2\]))\n

应该这样做(使用否定的后视来取消</h2>之前的[/h2]\n

答案 1 :(得分:0)

如果您的html符合xhtml,请将其加载为System.Xml.Linq.XDocument,不要尝试使用Regex进行分析。正如一些人所说,“甚至查克诺里斯都不能这样做。”