Да, вы можете сделать это с помощью регулярных выражений.Я бы не стал делать это за один проход.Я предполагаю, что у вас есть HashTable или другое хранилище, где вы можете найти строку-заполнитель, чтобы получить текст, который вы хотите поместить на его место.Также я предполагаю, что вы хотите сделать это из кода C #, есть вызов инструмента sed, который сделает это из командной строки в unix / linux или cygwin underwindows, который это делает.и он работает с регулярными выражениями.
при разработке выражений регулярных выражений. Мне нравится использовать этот сайт: http://regexpal.com/
, поэтому сначала попробуйте найти шаблон для заполнителя с нежелательными \r \ n в нем: "\ [([^ \]] +) \]" это найдет любой шаблон, который начинается с [имеет хотя бы один символ, которого нет] и заканчивается].
когда у вас есть список совпадений, вы можете поработать над удалением шаблона, который вам не нужен, прежде чем использовать его для поиска.
вот очень простой маленький пример:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
String textFromFile = "some text [re=\r\npla=\r\nme] more [Anoth=\r\ner=\r\n place=\r\n=\r\n=\r\n holder] text";
foreach (Match match in Regex.Matches(textFromFile, "\\[([^\\]]+)\\]"))
{
String placeHolder = match.Groups[1].Value.Replace("=\r\n", "");
// *** Do rest of your work here ***.
System.Console.WriteLine(placeHolder);
}
}
}
}
Эта программа печатает:
replaceme
Another place holder