【问题标题】:Replace matched characters from regex in a string从字符串中的正则表达式替换匹配的字符
【发布时间】:2011-06-28 16:52:56
【问题描述】:

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

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

【问题讨论】:

    标签: c# regex roman-numerals


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,感谢您询问我的问题并更新我的问题,看看您是否可以帮助我
    【解决方案2】:

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

    【讨论】:

    • 嗨,感谢您询问我的问题并更新我的问题,看看您是否可以帮助我
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 2015-11-30
      • 2011-09-02
      • 2013-10-24
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      相关资源
      最近更新 更多