0

我试图弄清楚如何替换这个字符串中的一些文本:

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

3 回答 3

4

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

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

Now the expression matches any isolated word that looks like a roman numeral, and this can be used to replace it.

于 2011-06-16T16:38:05.333 回答
1

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

于 2011-06-16T16:35:50.097 回答
0

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

于 2011-06-16T16:36:54.647 回答