美文网首页
1.4 字符组简记法

1.4 字符组简记法

作者: 马小跳_ | 来源:发表于2018-12-10 20:07 被阅读9次

对于[0-9][a-z]等常用字符组,正则表达式提供了更简单的记法,这就是字符组简记法(shorthands)。

常用的字符组简记法

含义 表达式 等价表达式
数字字符(0-9) \d [0-9]
单词字符(数字字母下划线) \w [0-9a-zA-Z_]
空白字符 \s [ \t\r\n\v\f](第一个字符是空格)

“空白字符”并不难定义,它可以是空格字符、制表符\t、回车符\r,换行符\n等各种“空白”字符,只是不方便展现(因为打印出来都是空白)。

字符组简记法可以单独出现,也可以使用在字符组中,比如[0-9a-z]可以写作[\da-z][^0-9]可以写作[^\d]

相对于\d\w\s这三个普通字符组简记法,正则表达式也提供了对应排除型字符组的简记法:\D\W\S——字母完全一样,只是改为大写。这些简记法匹配的字符互补:\d能匹配的字符,\D一定不能匹配,\w能匹配的字符,\W一定不能匹配,\s能匹配的字符,\S一定不能匹配。

re.search(r'\d', '8') is not None  # True
re.search(r'\d', 'a') is not None # False

妥善利用这种互补的属性,可以得到一些非常巧妙的效果。最简单的应用就是字符组[\s\S],它等价于[\w\W][\d\D],可以匹配“任意字符”。

关于字符组简记法,最后要补充两点:

  • 如果字符组中如果出现了字符组简记法,最好不要出现单独的-,比如[\d-a]就让人很困惑,在有些语言中-会被当作普通字符,而在有些语言中,这样写会报错。
  • 以上说的\d\w\s的匹配规则,都是针对ascii 编码而言的,也叫ASCII匹配规则。但是,目前一些语言中的正则表达式已经支持了Unicode字符,那么数字字符、单词字符、空白字符的范围,已经不仅仅限于ASCII编码中的字符。

相关文章

  • 1.4 字符组简记法

    对于[0-9]、[a-z]等常用字符组,正则表达式提供了更简单的记法,这就是字符组简记法(shorthands)。...

  • shell字符串操作

    1.1 按照下标截取 1.2 字符串长度 1.3 字符串删除 1.4 字符串替换

  • 1.4、字符、字符串

    //: Playground - noun: a place where people can play impo...

  • 3组-敏姐-第四次作业打卡

    3组-敏姐-第四次作业打卡 G:康奈尔笔记法是课堂笔记记录方法的首选 康奈尔笔记法,是发明这种笔记法的Walter...

  • 1.4 字符和字符串

    在Java中,字符和字符串是两个不同的类型。 1. 字符 字符类型char是基本数据类型,它是character的...

  • iOS Swift 基础类型转换相关

    1 字符串截取 1.1 提取单个字符: 1.2 截取前三个字符: 1.3 截取后三个字符: 1.4 提取多个字符:...

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

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

  • 面试和算法心得

    目录 第一章 字符串1.0 本章导读1.1 旋转字符串1.2 字符串包含1.3 字符串转换成整数1.4 回文判断1...

  • 再看正则表达式

    术语:字符组、排除型字符组、多选结构、反向引用、或与 前瞻: 后顾: 负前瞻: 负后顾: 1、“字符组”示例 2、...

  • 第一章 正则表达式入门

    Egrep元字符——检索 1.行的起始^和结束$ 2.字符组 匹配若干字符之一[···],字符组元字符与元字符的区...

网友评论

      本文标题:1.4 字符组简记法

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