带换行符的C#正则表达式

时间:2009-05-28 13:14:12

标签: c# regex

您好我有以下代码

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            string searchText = "find this text, and some other text";
            string replaceText = "replace with this text";


            String query = "%SystemDrive%";
            string str = Environment.ExpandEnvironmentVariables(query);
            string filePath = (str + "mytestfile.xml"); 

            StreamReader reader = new StreamReader( filePath );
            string content = reader.ReadToEnd();
            reader.Close();

            content = Regex.Replace( content, searchText, replaceText );

            StreamWriter writer = new StreamWriter( filePath );
            writer.Write( content );
            writer.Close();
        }
    }
}

替换找不到搜索文本,因为它位于单独的行上,如

  

找到这个文本,
  和其他一些文字。

我如何编写正则表达式,以便找到文本。

3 个答案:

答案 0 :(得分:4)

要搜索任何空格(空格,换行符,制表符......),您应该在正则表达式中使用\ s:

string searchText = @"find\s+this\s+text,\s+and\s+some\s+other\s+text";

当然,这是一个非常有限的例子,但你明白了......

答案 1 :(得分:1)

为什么要尝试使用正则表达式进行简单搜索和替换?只需使用:

content.Replace(searchText,replaceText);

您可能还需要在字符串中添加'\ n'以添加换行符,以便匹配替换。

尝试将搜索文本更改为:

string searchText = "find this text,\n" + 
                    "and some other text";

答案 2 :(得分:0)

这是针对您的具体问题的附注,但您正在重新发明框架为您提供的一些功能。试试这段代码:

static void Main(string[] args)
{
    string searchText = "find this text, and some other text";
    string replaceText = "replace with this text";

    string root = Path.GetPathRoot(Environment.SystemDirectory);
    string filePath = (root + "mytestfile.xml"); 

    string content = File.ReadAllText(filePath);
    content = content.Replace(searchText, replaceText);

    File.WriteAllText(filePath, content);  
}