Я пишу скрипт, который поможет мне конвертировать набор текстовых файлов в уценку. Одна из вещей, которые выполняет этот скрипт, - это применение курсива и форматирования заголовков к заголовкам рисунков, которые представляют собой строки, начинающиеся с пробелов и слова «Рисунок». Это мой код:
text = Regex.Replace(text, "^ +(Figure.*)$", "##### _$1_", RegexOptions.Multiline);
Если я использую это для преобразования этого текста:
A Foobar is cool stuff, as we can see in Figure 1.1:
Figure 1.1 This is a Foobar
More text here.
... тогда я получаю это:
A Foobar is cool stuff, as we can see in Figure 1.1:
##### _Figure 1.1 This is a Foobar _
More text here.
... это то, что я хочу, за исключением одной маленькой детали: пробел добавлен прямо перед последним символом подчеркивания в окне вывода LinqPad. Я не знаю, откуда это взялось, поскольку его нет в исходном тексте (есть последовательность CRLF сразу после «Foobar»). Что не так с моим регулярным выражением или с тем, как я его использую?
РЕДАКТИРОВАТЬ: Полная исполняемая программа, демонстрирующая проблему:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main()
{
string text =
@"A Foobar is cool stuff, as we can see in Figure 1.1:
Figure 1.1 This is a Foobar
More text here.";
text = Regex.Replace(text, "^ +(Figure.*)$", "##### _$1_", RegexOptions.Multiline);
Console.WriteLine(text);
}
}