Заменить совпадающие символы из регулярного выражения в строке

Я пытаюсь понять, как заменить некоторый текст в этой строке:

'some text blah blah XII'

Мне нужно заменить римские цифры пустой строкой, в результате чего:

'some text blah blah'

У меня есть следующее регулярное выражение, которое правильно соответствует римской цифре.

string p1 = "^m*(d?c{0,3}|c[dm])"+ "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$";

Как заменить совпадения пустой строкой?

ОБНОВЛЕНИЕ

я пробовал так и не работает

string algo = Regex.Replace("some text blah blah XII", "\bm*(d?c{0,3}|c[dm])(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])\b"," ");

person Jorge    schedule 16.06.2011    source источник


Ответы (3)


Дело в том, что ваше регулярное выражение соответствует всей строке, потому что регулярное выражение начинается с ^ (= начало строки/строки) и заканчивается $ (= конец строки/строки). Чтобы вместо этого сопоставить одно слово, замените границы ^ и $ границами слов, \b.

string p1 = "\bm*(d?c{0,3}|c[dm])(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])\b";

Теперь выражение соответствует любому изолированному слову, похожему на римскую цифру, и его можно использовать для замены.

person Konrad Rudolph    schedule 16.06.2011
comment
привет и спасибо, что спросили, я поставил и обновил свой вопрос, чтобы увидеть, можете ли вы мне помочь - person Jorge; 16.06.2011

Как насчет Regex.Replace? Обратите внимание, что вам нужно удалить якоря из вашего RE, чтобы это работало.

person Joey    schedule 16.06.2011
comment
привет и спасибо, что спросили, я поставил и обновил свой вопрос, чтобы увидеть, можете ли вы мне помочь - person Jorge; 16.06.2011

Попробуйте использовать: Regex.Replace("some text blah blah XII", p1, "");

person The Mask    schedule 16.06.2011