C#中的多行正则表达式

如何在多行模式下使用正则表达式匹配和替换文本?

我知道RegexOptions.Multiline选项,但是用C#中的新行字符指定匹配all的最佳方法是什么?

输入:

this is a text 

输出:

 [tag name="abc"]this is a test [/tag] 

啊,我发现了实际的问题。 ‘&’和’;’ 在Regex中,匹配文本在一行中,而同样需要在Regex中进行转义,以便在有新行的情况下工作。

如果你的意思是必须有一个换行符的换行符,那么\n将为你做到这一点。

否则,我认为您可能误解了Multiline / Singleline标志。 如果希望表达式跨多行匹配,实际上您想要使用RegexOptions.Singleline 。 这意味着它将整个输入字符串视为一行,从而忽略换行符。 这就是你要追求的……?

 Regex rx = new Regex("(.*?)", RegexOptions.Singleline); String output = rx.Replace("Text test\nwith\nnewline more text...", "[tag name=\"$1\"]$2[/tag]"); 

这是匹配的正则表达式。 它需要RegexOptions.Singleline选项,这使得. 匹配换行符。

 <(\w+) name="([^"]*)">(.*?) 

在此正则表达式之后,第一个组包含标记,第二个组包含标记名称,第三个组包含标记之间的内容。 所以替换字符串可能如下所示:

 [$1 name="$2"]$3[/$1] 

在C#中,这看起来像:

 newString = Regex.Replace(oldString, @"<(\w+) name=""([^""]*)"">(.*?)", "[$1 name=\"$2\"]$3[/$1]", RegexOptions.Singleline);