Как бы вы написали регулярное выражение для преобразования разметки в HTML? Например, вы должны ввести следующее:
This would be *italicized* text and this would be **bold** text
Затем это нужно преобразовать в:
This would be <em>italicized</em> text and this would be <strong>bold</strong> text
Очень похоже на элемент управления редактированием mark down, используемый stackoverflow.
Разъяснение
Как бы то ни было, я использую C#. Кроме того, это реальные теги / уценка Только, которые я хочу разрешить. Количество преобразуемого текста будет меньше 300 символов или около того.





Одно регулярное выражение не подойдет. У каждой текстовой разметки будет собственный переводчик html. Лучше посмотрите, как реализованы существующие конвертеры, чтобы понять, как это работает.
http://en.wikipedia.org/wiki/Markdown#See_also
Лучший способ - найти версию библиотеки Markdown, перенесенную на любой язык, который вы используете (вы не указали в своем вопросе).
Теперь, когда вы пояснили, что вам нужно обрабатывать только STRONG и EM, и что вы используете C#, я рекомендую вам взглянуть на Markdown.NET, чтобы увидеть, как реализованы эти теги. Как видите, на самом деле это два выражения. Вот код:
private string DoItalicsAndBold (string text)
{
// <strong> must go first:
text = Regex.Replace (text, @"(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) ",
new MatchEvaluator (BoldEvaluator),
RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
// Then <em>:
text = Regex.Replace (text, @"(\*|_) (?=\S) (.+?) (?<=\S) ",
new MatchEvaluator (ItalicsEvaluator),
RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
return text;
}
private string ItalicsEvaluator (Match match)
{
return string.Format ("<em>{0}</em>", match.Groups[2].Value);
}
private string BoldEvaluator (Match match)
{
return string.Format ("<strong>{0}</strong>", match.Groups[2].Value);
}
На самом деле не имеет значения, на каком языке ... должно быть простое регулярное выражение для обработки условия.
Я добавил некоторые пояснения к вопросу.
Markdown.NET уже давно прекращен. Вместо этого есть реализация StackOverflow: MarkdownSharp - blog.stackoverflow.com/2009/12/introduction-markdownsharp
Я не знаю конкретно о C#, но в perl это будет:
s /
\ * \ * (. *?) \ * \ * /
\ <bold> 1 доллар \ </bold> / g
s /
\ * (. *?) \ * /
\ <em> 1 доллар \ </em> / g
Я только что наткнулся на следующую статью на kore-nordmann.de/blog/do_NOT_parse_using_regexp.html.