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

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

'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])$";

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

UPDATE

Я пытался так, и это не работает

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"," ");

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

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

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

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

1 голос
/ 16 июня 2011

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

0 голосов
/ 16 июня 2011

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

...