• 正则表达式-字符类减法


    字符类减法: [base_group - [excluded_group]]
     
    一个字符类定义一组字符。 字符类减法将产生一组字符,该组字符是从一个字符类中排除另一个字符类中的字符的结果。

    字符类减法表达式具有以下形式:

    base_group -[ excluded_group ]]

    方括号 ([]) 和连字符 (-) 是强制的。 base_group 是正字符组或负字符组。 excluded_group 部分是另一个正字符组或负字符组,或者是另一个字符类减法表达式(即,可以嵌套字符类减法表达式)。

    例如,假设你有一个由从“a”至“z”范围内的字符组成的基本组。 若要定义由除字符“m”之外的基本组组成的字符集,请使用 [a-z-[m]]。 若要定义由除字符集“d”、“j”和“p”之外的基本组组成的字符集,请使用 [a-z-[djp]]。 若要定义由除从“m”至“p”字符范围之外的基本组组成的字符集,请使用 [a-z-[m-p]]。

    可考虑使用嵌套字符类减法表达式 [a-z-[d-w-[m-o]]]。 该表达式由最里面的字符范围向外计算。 首先,在从“d”至“w”的字符范围中减去从“m”至“o”的字符范围,这将产生从“d”至“l”和从“p”至“w”的字符集。 然后,在从“a”至“z”的字符范围中减去该集合,这将产生字符集 [abcmnoxyz]。

    可以将任何字符类用于字符类减法。 若要定义字符集,该字符集包括除空白字符 (s)、标点通用类别中的字符 (p{P})、IsGreek 命名块中的字符 (p{IsGreek}) 以及 Unicode NEXT LINE 控制字符 (x85) 之外的所有从 u0000 至 uFFFF 的 Unicode 字符,请使用 [u0000-uFFFF-[sp{P}p{IsGreek}x85]]。

    为字符类减法表达式选择将会产生有用结果的字符类。 避免使用产生空字符集的表达式,这将无法匹配任何内容,同时避免使用等效于初始基本组的表达式。 例如,表达式 [p{IsBasicLatin}-[x00-x7F]] 从 IsBasicLatin 常规类别中减去 IsBasicLatin 字符范围内的所有字符,其结果为空集合。 类似地,表达式 [a-z-[0-9]] 的结果为初始基本组。这是因为,基本组(它是从“a”至“z”的字母组成的字符范围)不包含排除组(它是从“0”至“9”的十进制数组成的字符范围)中的任何字符。

    下面的示例定义正则表达式 ^[0-9-[2468]]+$,该表达式匹配输入字符串中的零和奇数。正则表达式模式可以解释为下表中所示内容。

     

    元素

    说明

    ^

    从输入字符串的开头处开始进行匹配。

    [0-9-[2468]]+

    匹配任意字符(从 0 到 9,除了 2、4、6 和 8 之外)的一个或多个匹配项。 换句话说,匹配零或奇数的一个或多个匹配项。

    $

    在输入字符串末尾结束匹配。

     
     
    using System;
    using System.Text.RegularExpressions;
    
    public class Example
    {
       public static void Main()
       {
          string[] inputs = { "123", "13579753", "3557798", "335599901" };
          string pattern = @"^[0-9-[2468]]+$";
    
          foreach (string input in inputs)
          {
             Match match = Regex.Match(input, pattern);
             if (match.Success) 
                Console.WriteLine(match.Value);
          }      
       }
    }
    // The example displays the following output:
    //       13579753
    //       335599901
     
  • 相关阅读:
    [置顶] 十年博客行
    计算机编程语言年史
    初步认知MySQL metadata lock(MDL)
    Oracle语句优化规则(二)
    正则表达式
    sql server中的 SET NOCOUNT ON 的含义
    SQO (标准查询运算符)方法 & Linq To Object
    C# 扩展
    特性
    C#之泛型
  • 原文地址:https://www.cnblogs.com/qixuejia/p/4212715.html
Copyright © 2020-2023  润新知