如何从正则表达式中提取字符串?

时间:2013-12-12 18:35:49

标签: c# regex asp.net-mvc-3

我需要模式匹配一​​些文本并用一些HTML替换它。

目前我正在使用以下正则表达式在我的C#MVC 3项目中找到[v AnyTextHere]。

\\[[v] (.*?)\\]

我遇到的问题是,一旦我找到上面的文本,我就想要替换开头和结尾但是将文本保留在中间。例如:

[v AnyTextHere]

变为

<p>AnyTextHere</p>

我已经考虑过将所有匹配项放入一个修剪开始和结束的数组中,然后用它们周围的HTML替换它们。但是我确信如果我要成为正则表达式的主人,那就更好了,我不是!

我还应该添加AnyTextHere部分没有空格但是我无法控制它的值。每页也可能有多个匹配,但每个匹配只能出现一次。

我希望这有点道理。

非常感谢提前。

1 个答案:

答案 0 :(得分:4)

试试这个:

string input = "[v AnyTextHere]";
string htmlOutput = Regex.Replace(input, "\\[v (.*?)\\]", "<p>$1</p>");

如何工作:$1引用第一个括号内的值,在这种情况下为.*?。也没有必要将v放在一个字符类中,因为只允许一个字符,所以你可以用[v]替换v