正则表达式-字符类减法

字符类减法: [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-[\s\p{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
时间: 2024-08-28 13:18:09

正则表达式-字符类减法的相关文章

JavaScript正则表达式-字符类

JavaScript正则表达式字符类包括六种: 1.字符列表. 2.反向列表. 3.字符范围. 4.反向范围. 5.组合类. 6.预定义类. 字符列表 在方括号内指定一个或者多个字符组成的字符列表,与字符列表中任意字符匹配,都被认为是匹配的.每次匹配只能匹配列表中的一个字符. str = "bird,head,fed,meadow,3d"; reg_pattern = /[rea3s]d/g; arr_m = str.match(reg_pattern);//arr_m = [&quo

正则表达式-字符类

字符类是对通配符概念的改进.我们可以列出要匹配的字符,而不是匹配特殊位置的任意字符.使用方括号元字符( [] )将字符列表括起来,其中每个字符占据一个位置. 字符类在处理大写和小写字母时非常有用.例如,如果"what" 可能以首字母大写或小写的形式出现,则可以指定: [Ww]hat 这个正则表达式可以匹配"what" 或"What" .它匹配包含这4个字符的字符串的任意行,第一个字符是"W" 或"w" .因

正则表达式——字符类、分支条件、分组

思路来源:http://deerchao.net/tutorials/regex/regex.htm#alternative 感谢deerchao,写的比菜鸟教程好太多了.现在感觉菜鸟教程可能就是翻译了一些doc,而且是思路结构不太清晰的doc…… 进入正题,主要还是看了教程后自己的理解. 字符类 字符类,即为如 [aeiou].[1-9].[19].[.?!] 等用英文中括号括起字符的字符集合. 解释与辨析: [aeiou]:匹配a 或 e 或 i 或 o 或 u . [0-9]:匹配 0 或

Linux正则表达式-排除字符类

通常,字符类包括在哪个位置想要匹配的所有的字符.在类中作为第一个字符的脱字符(^)将类中的所有字符排除在被匹配之外.相反,除换行符以外的没有列在方括号中的任意字符都将匹配.下面的模式将匹配任意非数字字符: [^0-9] 它匹配字母表中所有的大写和小写字母以及所有特殊字符,例如标点符号.排除特殊字符有时比显示地列出想要匹配的所有字符更方便.例如,如果想要匹配任意辅音,可以简单地排除元音: [^aeiou] 该表达式匹配任意辅音,大写的任意元音,任意标点符合或特殊的字符. 请看下面的正则表达式: \

JS正则表达式从入门到入土(2)—— 元字符和字符类

元字符和字符类 元字符 正则表达式由两种基本字符类型组成: 1.原义(正常)文本字符:代表本身含义的字符,如:a.b.c.1.2.3等. 2.元字符:元字符是在正则表达式中有特殊含义的非字母字符,如\b代表单词边界,可以是单词的开头或结尾. 常见的符号元字符: *+?$^.|\(){}[] 字符类 一般情况下,正则表达式一个字符对应字符串一个字符.比如,表达式ab\t的含义就是ab加上一个\t(水平制表符). 但是,很多时候,我们不想匹配某个字符,而想匹配某类字符.此时,我们可以使用元字符[]来

正则表达式中的字符类

字符类引用 [[:alnum:]] 字母和数字 [[:alpha:]] 字母[[:blank:]] 仅表示空格和制表符[[:cntrl:]] 控制字符[[:digit:]] 十进制数[[:graph:]] 打印字符,不包含空格[[:lower:]] 小写字母[[:upper:]] 大写字母[[:print:]] 打印字符,包含空格[[:punct:]] 打印字符,不包含字母和数字[[:space:]] 空格[[:xdigit:]] 十六进制数

java正则表达式中的POSIX 字符类和Unicode 块和类别的类介绍

假如现在有一个需求,要你用Java语言来匹配出一个文本里面的所有(英文半角)标点符号,你会怎么写呢?我想大多数人应该是把这些符号都罗列出来, 如: !"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 但[!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~]这样写需要转义一下, 结果为: [-!"\#\$%&'()*+,./:;<=>

常用正则表达式字符说明

元字符 . . 除换行符的任意字符 DOTALL\ 转义字符[…] 字符集合\d 数字:[0-9]\D 非数字[^0-9]\s 空白字符[<空格>\t\r\n\f\n]\S 非空白字符[^\s]\w 单词字符[A-Za-z0-9_]\W 非单词字符[^\w] 数量词 * 匹配前一个字符0或者多次+ 匹配前一个字符1次或者多次? 匹配前一个字符0次或者1次{m} 匹配前一个字符m次{m,n} 匹配前一个字符m至n次数量词? 变成非贪婪模式 边界 ^ 匹配字符串开头,多行匹配每一行开头$ 匹配字符

正则表达式-字符的范围

连字符(-)用于指定一个字符范围.例如,所有大写英文字符的范围可以指定为: [A-Z] 一个数字的范围可以指定为: [0-9] 该字符类有助于解决匹配文章引用的问题.请看下面的正则表达式: [cC]hapter [1-9] 它匹配字符串"chapter" 或"Chapter" 且其后面跟有空格,然后是从1到9的任意单个数字,下面的每一行都匹配这种模式: you will find the information in chapter 9 and chapter 12