zoukankan      html  css  js  c++  java
  • [c#.Net]正则表达式 记录

    1. @符号
      c#字符串前使用@符号,“@”表示,跟在它后面的字符串是个“逐字字符串”。
      1 string x="D:\My Huang\My Doc";
      2 string y = @"D:My HuangMy Doc"; //等效
    2. 基本语法
      d 0-9数字
      D d的补集,即所有非数字的字符
      w 单词字符,包括:大小写字符,0-9数字,下划线
      W w的补集
      s 空白字符
      S  s的补集
      . 除换行符 外的所有字符
      [...] 匹配[]内列出的所有字符
      [^...] 匹配非[]内列出的所有字符
      (...) 匹配组合,记录
      (?:...) 匹配组合,非记录


    3. 定位
      ^ 字符串开始
      $ 字符串结束
       匹配一个单词的边界
      B 匹配一个非单词边界


    4. 重复描述字符
      {n} 匹配前面的字符n次
      {n,}  匹配前面的字符大于等于n次
      {n,m} 匹配前面的字符n到m次
      ? 0到1次
      + 1到多次
      * 0到多次

    5. 组与非捕获组
      正则表达式引擎会记忆"()"中匹配到的内容,作为一个组,并且可以通过索引的方式进行引用。表达式中的"1",用于反向引用表达式中出现的第一个组
       1 string x = "Find somebody to love me, Find somebody to love";
       2 Regex r = new Regex(@"^Find ([a-z]{8}) to ([a-z]{4}) me, Find 1 to 2$");
       3 // r.Matches(x).Count --> 1
       4 // Groups[0]是整个匹配的字符串,Groups[1]是组内的内容
       5 // r.Matches(x).Groups[1].Value --> somebody
       6 
       7 Regex r2 = new Regex(@"^Find (?<group1>[a-z]{8}) to ([a-z]{4}) me, Find 1 to 2$");
       8 // r2.Matches(x).Groups["group1"].Value
       9 
      10 string y = "Find somebody somebody";
      11 regex r3 = new Regex(@"(?<g1>[a-z]+) 1");
      12 if (r3.IsMatch(y))
      13 {
      14     y = r3.Replace(y, "${g1}");
      15 }
    6. 贪婪与非贪婪
      在*,+符号后添加?,可以将匹配模式改成非贪婪
    7. 忽略大小写
      Regex reg = new Regex(regPattern, RegexOptions.IgnoreCase);
  • 相关阅读:
    POJ 1789:Truck History
    POJ 1258:Agri-Net Prim最小生成树模板题
    POJ 1837:Balance 天平DP。。。
    杭电1754--I Hate It(线段树)
    Poj3259--Wormholes(Spfa 判负环)
    杭电1068--Girls and Boys(二分图最大独立集)
    杭电1010--Tempter of the Bone(Dfs+剪枝)
    杭电2647--Reward(反向拓扑)
    杭电1083--Courses(二分图匹配)
    杭电2063--过山车(二分匹配)
  • 原文地址:https://www.cnblogs.com/bicker/p/5244987.html
Copyright © 2011-2022 走看看