正则表达式贪心问题(C#)

dan*_*yyy 6 c# regex greedy regex-greedy

我有一个输入字符串,如"=== text ===和=== text ===",我想用相应的html标签替换wiki语法.

输入:

===text=== and ===text===
Run Code Online (Sandbox Code Playgroud)

理想输出:

<h1>text</h2> and <h1>text</h2>
Run Code Online (Sandbox Code Playgroud)

但是使用以下代码我得到了这个输出:

var regex = new Regex("---(.+)---");
var output = regex.Replace("===text=== and ===text===", "<h1>$1</h1>");

<h1>text=== and ===text</h1>
Run Code Online (Sandbox Code Playgroud)

我知道问题是我的正则表达式与贪婪相匹配.但是如何让他们不贪心.

谢谢你,亲切的问候.丹尼

Wis*_*yEh 14

问号添加到正则表达式:===(.+?)===

更好的选择是使用以下形式的正则表达式:===([^\=] +)===.有关使用点的说明,请参阅本指南中的点字符.在对我提供的正则表达式进行基准测试时,它是大约.比正则表达式快50%.