2016-07-06 6 views
-2

У меня есть ситуация, когда у меня есть строка, в которой я должен заменить часть, которая находится между специальными символами. Я могу сделать то же самое, используя подстроки и длину, но это грязный способ. Есть ли лучший способ сделать это с помощью регулярного выражения?Regex заменить строку между специальными символами в C#

например. строки является

string str1 = "This is the <![CDATA[ SampleDataThatNeedsToBeReplaced ]]"; 
string repl = "Replacement Text"; 

мне нужно регулярное выражение, чтобы получить выход в

This is the Replacement Text 

Я попробовать несколько регулярных выражений вроде следующего

result = Regex.Replace(str1, @"(?<=CDATA\[)(\w+?)(?=\]\])", repl); 

Я также попытался

Regex x = new Regex("(\\[CDATA\\])(.*?)(\\[\\]\\]\\])"); 
string Result = str1.Replace(text, "$1" + repl + "$3"); 

не получил результатов. Любая помощь приветствуется.

+0

Почему бы вам не использовать метод 'string.Replace', тогда это будет проще, если вы будете бороться с' Regex ' – MethodMan

+0

thats то, что я делаю прямо сейчас, но он выглядит очень грязным, так как я должен получить начальный индекс, индекс конца, а затем подстроки, а затем конкатенация. Так что, если это можно сделать с помощью regex .. грязная часть может быть пропущена – Gautam

+0

, так что где «текст», приходящий от .., когда вы показываете код, пожалуйста, покажите все примеры вашей строки, и как ожидается, ваш ожидаемый результат будет выглядеть как – MethodMan

ответ

1
Regex.Replace (
    "This is the <![CDATA[ SampleDataThatNeedsToBeReplaced ]]", 
    @"<!\[CDATA\[(.+)]]", 
    "Replacement Text"); 

Обратите внимание, что в случае необходимости; старый текст (между внутренними скобками) доступен как group1 (и поэтому можно ссылаться на $1)

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