我正在试图找出如何替换此字符串中的一些文字:
'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"," ");
答案 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, "");