Многократные замены регулярных выражений в C # - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь создать замену статьи на основе регулярных выражений для автоматического преобразования встроенных ссылок (многих из них) в сообщения в соответствующий формат ссылки и заголовка.

Например, учитывая это:

I have already blogged about this topic ((MY TOPIC ID: "2324" "a number of times")) before.   And I have also covered ((MY TOPIC ID: "777" "similar topics")) in the past.

... Я хочу получить это:

I have already blogged about this topic <a href='/post/2324'>a number of times</a> before.   And I have also covered <a href='/post/777'>similar topics</a> in the past.

У меня сейчас есть это:

/* Does not work */
public static string ReplaceArticleTextWithProductLinks(string input)
{
    string pattern = "\\(\\(MY TOPIC ID: \\\".*?\\\" \\\".*?\\\"\\)\\)";
    string replacement = "<a href='/post/$1'>$2</a>";

    return Regex.Replace(input, pattern, replacement);
}

Но, похоже, возвращаются строки, содержащие <a href='/post/'></a> без добавления совпадений вместо $ 1 и $ 2.

Вопрос : Какой самый простой способ преобразовать строку № 1 выше в строку № 2 выше?

1 Ответ

1 голос
/ 10 ноября 2010

Вы не захватываете части выражения, которые хотите извлечь.Попробуйте что-то вроде этого:

public static string ReplaceArticleTextWithProductLinks(string input)
{
    string pattern = @"\(\(MY TOPIC ID: ""(.*?)"" ""(.*?)""\)\)";
    string replacement = "<a href='/post/$1'>$2</a>";

    return Regex.Replace(input, pattern, replacement);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...