美文网首页
1.1 字符组

1.1 字符组

作者: 马小跳_ | 来源:发表于2018-12-08 17:00 被阅读23次

顾名思义,字符组(character class)就是一组字符,在正则表达式中,它表示“在同一个位置可能出现的各种字符”,其写法是在一对方括号之间列出所有可能出现的字符,简单的字符组比如[ab][1234][#.?]在解决一些常见问题时可以大大简化操作。

字符可以分为很多累,比如数字、字母、标点等。有时候要求“只出现一个数字”,换句话说,这个歌位置上的字符只能是0-9折十个字符之一。

例1-2 使用正则表达式判断数字字符

re.search("[0123456789]", '3') != None  # True

字符组中字符的排列顺序并不影响字符组的功能,出现重复字符也不会影响。所以[123][112233][3321]是等价的。但是一般不推荐在字符组中出现重复字符,并且,还应该让字符组中的字符排列更符合认知习惯,比如[0123456789]就好过[9876543210]。为此,正则表达式提供了范围表示法(range),它更加直观且简化。

所谓“范围表示法”,就是用[x-y]表示x到y整个范围内的字符,省去一一列出的麻烦。比如[12345]可以表示为[1-5][abcdefghijk]可以表示为[a-k]

在字符组中,-表示的范围,一般是根据字符对应的码值(code point,也就是字符在对应编码表中编码的数值)来确定的,码值小的字符在前,码值大的字符在后。在ascii编码中,字符0的码值是48,字符9点码值是57,所以[0-9]等价于[0123456789],而[9-0]是错误的范围,因为9点码值大于0的码值,所以会报错。

字符组中可以同时并列多个“-范围表示法”,字符组[0-9A-Za-z]可以匹配数字和大小写字母。

在ascii编码中,09的码值是48~57,A-Z的码值是65~90,az的码值是97~122。

不少语言中,可以用转义序列\xhex_num来表示一个字符,其中\x是固定前缀,表示转义序列的开头,hex_num是字符对应的码值,是一个两位的十六进制数值。比如A的ascii码值是41(十进制65),所以可以用\x41表示。

re.search("\x41", 'A') is not None  # True
re.search("\x61", 'a') is not None  # True

字符组中有时会出现这种表示法,它可以表现一些难以输入或者难以显示的字符,比如\x7F;也可以用来方便地表示某个范围,比如所有ASCII字符对应的字符组是[\x00-\x7F]

all(re.search("^[\x00-\x7F]$", x) for x in ['c', 'I', '0', '<'])  # True

相关文章

  • 1.1 字符组

    顾名思义,字符组(character class)就是一组字符,在正则表达式中,它表示“在同一个位置可能出现的各种...

  • 正则表达式Match

    1.字符组 1.1普通字符组 范围表示法: 并列范围表示法: 转义序列\x:固定前缀\x+numnum:字符对应的...

  • 正则表达式

    一、字符组 1.1 排除型[^0-9] 表示 “0-9之外的字符“^”紧跟“[”表示“除什么什么之外”排除型字符组...

  • 第一章 字符组

    1.1 字符组   字符组(character class)是正则表达式最基本的结构之一,要理解正则表达式的“灵活...

  • C strtok strtok_s 函数说明 按分隔符分解字

    1. 说明 1.1 函数签名如下: str : 要被分解成一组小字符串的字符串。 delimiters : 包含...

  • 1.正则表达式使用基础:字符组(一)

    1.1普通字符组 字符组是正则表达式最基本的结构之一。它表示“在同一位置可能出现的各种字符”。其写法是在一对方括号...

  • Day03-字符串

    1.1 认识字符串 1.1什么是字符串 1.2 阻止转义 1.3 python中字符串中的字符是Unicode编码...

  • Python文件

    1.1. 字符编码 1.1.1. 字符编码的作用 计算机只认识0和1组成的二进制序列,因此任何文件中的内容(比如"...

  • 1.正则表达式使用基础:字符组(二)

    1.3 排除型字符组 在方括号[………]中列出希望匹配的所有字符,这种字符组可以叫做"普通字符组"。它的确比较方便...

  • day 16

    第十二章 系统权限知识及应用实践 1.1、Linux基础权限 1.1.1、 Linux基础权限是9个字符 分三组:...

网友评论

      本文标题:1.1 字符组

      本文链接:https://www.haomeiwen.com/subject/lcgqhqtx.html