2013-12-12 4 views
0

Мне нужно, чтобы шаблон соответствовал некоторому тексту и заменил его на некоторый HTML.Как извлечь строку из регулярного выражения?

В настоящее время я использую следующее регулярное выражение, чтобы найти [v AnyTextHere] в моем проекте C# MVC 3.

\\[[v] (.*?)\\] 

Проблема, которую я имею, что как только я найти вышеуказанный текст, я тогда хочу заменить начало и конец, но сохранить текст в середине. Так, например:

[v AnyTextHere]

становится

<p>AnyTextHere</p> 

Я думал о вводе всех матчей в массив, обрезки начало и конец, а затем заменить их обратно с HTML вокруг них. Однако я уверен, что есть намного лучший способ, если я буду мастером регулярного выражения, которого я не знаю!

Я также должен добавить раздел AnyTextHere, который не будет содержать пробелов, но вне моего контроля относительно того, какое значение может быть. Также может быть более одного совпадения на страницу, однако каждое совпадение может появляться только один раз.

Надеюсь, это имеет смысл.

Большое спасибо заранее.

ответ

4

Попробуйте это:

string input = "[v AnyTextHere]"; 
string htmlOutput = Regex.Replace(input, "\\[v (.*?)\\]", "<p>$1</p>"); 

Как это работает: $1 относится к значению, которое находится внутри первых скобок, .*? в этом случае. Также нет необходимости помещать v в класс символов, потому что разрешен только один символ, поэтому вы можете заменить [v] на v

+1

Спасибо за ваш быстрый ответ. Это было именно то, что мне нужно. –

Смежные вопросы