谈谈C# replace在正则表达式中的意义

2019-12-30 11:41:57刘景俊

罗马数字


string p1 = "^m*(d?c{0,3}|c[dm])" + "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$"; 
  string t1 = "vii"; 
  Match m1 = Regex.Match(t1, p1); 

交换前二个单词


string t2 = "the quick brown fox"; 
  string p2 = @"(S+)(s+)(S+)"; 
  Regex x2 = new Regex(p2); 
  string r2 = x2.Replace(t2, "$3$2$1", 1); 

关健字=值


string t3 = "myval = 3"; 
  string p3 = @"(w+)s*=s*(.*)s*$"; 
  Match m3 = Regex.Match(t3, p3); 

实现每行80个字符


string t4 = "********************" 
   + "******************************" 
   + "******************************"; 
  string p4 = ".{80,}"; 
  Match m4 = Regex.Match(t4, p4); 

月/日/年 小时:分:秒的时间格式


string t5 = "01/01/01 16:10:01"; 
  string p5 = @"(d+)/(d+)/(d+) (d+):(d+):(d+)"; 
  Match m5 = Regex.Match(t5, p5); 

改变目录(仅适用于Windows平台)


string t6 = @"C:Documents and Settingsuser1Desktop"; 
string r6 = Regex.Replace(t6,@"user1", @user2);

扩展16位转义符


string t7 = "%41"; // capital A 
  string p7 = "%([0-9A-Fa-f][0-9A-Fa-f])"; 
  string r7 = Regex.Replace(t7, p7, HexConvert); 

删除C语言中的注释(有待完善)


string t8 = @" 
  /* 
   * 传统风格的注释 
   */ 
  "; 
  string p8 = @" 
   /* # 匹配注释开始的定界符 
   .*? # 匹配注释 
   */ # 匹配注释结束定界符 
  "; 
  string r8 = Regex.Replace(t8, p8, "", "xs"); 

删除字符串中开始和结束处的空格


string t9a = " leading"; 
  string p9a = @"^s+"; 
  string r9a = Regex.Replace(t9a, p9a, ""); 
  string t9b = "trailing "; 
  string p9b = @"s+$"; 
  string r9b = Regex.Replace(t9b, p9b, ""); 

在字符后添加字符n,使之成为真正的新行


string t10 = @"ntestn"; 
  string r10 = Regex.Replace(t10, @"n", "n");