我需要模式匹配一些文本并用一些HTML替换它。
目前我正在使用以下正则表达式在我的C#MVC 3项目中找到[v AnyTextHere]。
\\[[v] (.*?)\\]
我遇到的问题是,一旦我找到上面的文本,我就想要替换开头和结尾但是将文本保留在中间。例如:
[v AnyTextHere]
变为
<p>AnyTextHere</p>
我已经考虑过将所有匹配项放入一个修剪开始和结束的数组中,然后用它们周围的HTML替换它们。但是我确信如果我要成为正则表达式的主人,那就更好了,我不是!
我还应该添加AnyTextHere部分没有空格但是我无法控制它的值。每页也可能有多个匹配,但每个匹配只能出现一次。
我希望这有点道理。
非常感谢提前。
答案 0 :(得分:4)
试试这个:
string input = "[v AnyTextHere]";
string htmlOutput = Regex.Replace(input, "\\[v (.*?)\\]", "<p>$1</p>");
如何工作:$1
引用第一个括号内的值,在这种情况下为.*?
。也没有必要将v
放在一个字符类中,因为只允许一个字符,所以你可以用[v]
替换v