美文网首页
1.3 排除型字符组

1.3 排除型字符组

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

在方括号中列出希望匹配的所有字符,这种字符组叫做”普通字符组“,它的确很方便。不过,有些问题是普通字符组不能解决的。比如,给定一个由两个字符构成的字符串,要判断这两个字符中的第一个是数字字符,第二个不是数字字符(比如a8,z4)。数字字符的匹配很好处理,用[0-9]即可,“不是数字”则很难办——不是数字的字符太多了,全部列出几乎不可能,这是就要使用排除型字符组。

排除型字符组(negated character class)非常类似普通字符组,只是在开方括号[后紧跟一个脱字符^,写作[^...],表示“在当前位置,匹配一个字符组中没有列出的字符”。所以[^0-9]就表示“0-9之外的字符”,也就是“非数字字符”。

re.search(r'[^0-9]', '0') is not None  # False
re.search(r'[^0-9]', 'a') is not None  # True

排除型字符组必须匹配一个字符,这点一定要记住。

re.search(r'^[^0-9]8', 'a8')  # True
re.search(r'^[^0-9]8', '8')  # False

排除型字符组的用法与普通字符组几乎相同,唯一需要改动的是:在排除型字符组中,如果需要表示横线字符,那么-应该紧跟在^之后;而在普通字符组中,作为普通字符的横线-应该紧跟在开方括号[之后。

re.search(r'[^-0-9]', '-') is None  # True
re.search(r'[^-0-9]', '7') is None  # True

排除型字符组的转义

# 匹配一个0、1、2之外的字符
[^012]
# 匹配四个字符之一:0、^、1、2
[012^]
# ^紧跟在[之后,但经过转义变为普通字符,等价于上一个表达式,不推荐
[\^012]

相关文章

  • 1.3 排除型字符组

    在方括号中列出希望匹配的所有字符,这种字符组叫做”普通字符组“,它的确很方便。不过,有些问题是普通字符组不能解决的...

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

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

  • 正则表达式

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

  • 再看正则表达式

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

  • 07.时间处理&抽取

    1.时间处理 1.1 字符型转时间型 1.2 时间格式化 将时间型数据,按照指定格式,转为字符型数据。 1.3 时...

  • Java基础总结1

    1. Java基本类型 1.1 数值型 byte、short、int、long 1.2 字符型 char 1.3 ...

  • 1.python基础 2.控制流 3.函数

    1.2 整型、浮点型和字符串数据类型 字符串用' ' 1.3字符串连接和复制 >>>‘Alice’+‘Bob’ '...

  • 3 Linux 正则表达式

    符号意思^锁定在行首$锁定在行尾.匹配任意一个字符[]字符组,其中任意一个匹配都成功[^]排除字符组,字符组中取反...

  • 二、数据类型和向量

    生信技能树数据挖掘课程学习笔记 二、数据类型和向量 数据类型 数值型numeric:1.3、2 字符型 chara...

  • 9. Palindrome Number_Swift

    难度 简单 题目 判断一组数字是否为回数Example 如下: 思路 思路一 排除负数,将数字转为字符串,再用字符...

网友评论

      本文标题:1.3 排除型字符组

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