从字符串中的正则表达式替换匹配的字符

时间:2011-06-16 16:32:57

标签: c# regex roman-numerals

我正在试图找出如何替换此字符串中的一些文字:

'some text blah blah XII'

我需要用空字符串替换Roman Numerals,结果是:

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

3 个答案:

答案 0 :(得分:4)

关键是你的正则表达式匹配整个字符串,因为正则表达式以^(=行/字符串的开头)开头,以$结尾(=行/字符串的结尾)。要匹配单个字词,请按字边界^替换边界$\b

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

现在表达式匹配任何看起来像罗马数字的孤立单词,这可以用来代替它。

答案 1 :(得分:1)

Regex.Replace怎么样?请注意,您需要从RE中移除锚点才能使其生效。

答案 2 :(得分:0)

尝试使用:Regex.Replace("some text blah blah XII", p1, "");