Reputation: 1729
Hello I have the following code
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();
}
}
}
the replace doesn't find the search text because it is on separate lines like
find this text,
and some other text.
How would I write the regex epression so that it will find the text.
Upvotes: 0
Views: 3039
Reputation: 5488
Why are you trying to use regular expressions for a simple search and replace? Just use:
content.Replace(searchText,replaceText);
You may also need to add '\n' into your string to add a line break in order for the replace to match.
Try changing search text to:
string searchText = "find this text,\n" +
"and some other text";
Upvotes: 1
Reputation: 415665
This is a side note for your specific question, but you are re-inventing some functionality that the framework provides for you. Try this code:
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);
}
Upvotes: 0
Reputation: 171744
To search for any whitespace (spaces, line breaks, tabs, ...), you should use \s in your regular expression:
string searchText = @"find\s+this\s+text,\s+and\s+some\s+other\s+text";
Of course, this is a very limited example, but you get the idea...
Upvotes: 4