任务描述
本关任务:运用正则表达式的区间表示方法,编写一个能从文本中快速匹配到数字与不是数字字符的小程序。
相关知识
为了完成本关任务,你需要掌握:

  1. 正则表达式区间的表达方式;
  2. 正则表达式区间取反的表达方式。

本关来学习正则表达式区间与区间取反的相关知识。
1.区间
有一些常见的字符组非常大,比如,我们要匹配的是任意数字,如果依照上述代码,每次我们都需要使用[0123456789] 这种方式明显很不明智,而如果要匹配从a-z的字母,我们也这样编写代码的话,肯定会让我们崩溃。

为了适应这一点,正则表达式引擎在字符组中使用连字符(-)代表区间,所以我们匹配任意数字可以使用[0-9],所以如果我们想要匹配所有小写字母,可以写成[a-z],想要匹配所有大写字母可以写成[A-Z]。

可能我们还有个需求:匹配连字符。因为-会被正则表达式引擎理解为代表连接区间,所以这个时候我们需要对-进行转义。

示例:

a = re.findall(r'[0-9]','xxx007abc')
b = re.findall(r'[a-z]','abc001ABC')
c = re.findall(r'[A-Za-z0-9]','abc007ABC')
d = re.findall(r'[0-9\-]','0edu 007-edu')
print(a)
print(b)
print(c)
print(d)

执行结果如下:

['0', '0', '7']
['a', 'b', 'c']
['a', 'b', 'c', '0', '0', '7', 'A', 'B', 'C']
['0', '0', '0', '7', '-']

2.区间取反
到目前为止,我们定义的字符组都是由可能出现的字符定义,不过有时候我们可能希望根据不会出现的字符定义字符组,例如:匹配不包含数字的字符组。

a = re.findall(r'[^0-9]','xxx007abc')
b = re.search(r'[^0-9]','xxx007abc')
print(a)
print(b)

执行结果如下:

['x', 'x', 'x', 'a', 'b', 'c']
<re.Match object; span=(0, 1), match='x'>

可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。
接下来再看一个表达式:n[^e] 这意味着字符n接下来的字符是除了e之外所有的字符。

a = re.findall(r'n[^e]','final')
b = re.search(r'n[^e]','final')
c = re.findall('r[n[^e]]','Python')
print(a)
print(b)
print(c)

执行结果如下:

['na']
<re.Match object; span=(2, 4), match='na'>
[]

这里我们可以发现a和b匹配的是na,字符a因为不是e所以可以被匹配,而变量c的值为空,在这里正则表达式引擎只匹配到了字符串n的位置,而n之后没有任何可以匹配[^e]的字符了,所以这里也匹配失败。

[]
<re.Match object; span=(0, 6), match='master'>

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  1. 匹配数字字符信息;
  2. 匹配不是数字字符的信息。

测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
测试输入:Python3 and python2.7;
预期输出:

['3', '2', '7']
['P', 'y', 't', 'h', 'o', 'n', ' ', 'a', 'n', 'd', ' ', 'p', 'y', 't', 'h', 'o', 'n', '.']
# coding=utf-8import reinput_str = input()# 1、编写获取到数字的正则,并输出匹配到的信息
########## Begin ##########
is_digit = re.findall(r'[0-9]',input_str)
print(is_digit)########## End ########### 2、编写获取到不是数字的正则,并输出匹配到的信息
########## Begin ##########
except_digit = re.findall(r'[^0-9]',input_str)
print(except_digit)
########## End ##########

第3关:基础正则表达式--区间与区间取反相关推荐

  1. SPOJ 7259 Light Switching (水题,区间01取反)

    #include <iostream> #include <stdio.h> #include <algorithm> #define lson rt<< ...

  2. 几个线段树板子(区间加/区间加与乘)

    一直仰慕dl能够把线段树玩出花来,所以就想手写并整理一下几个常见的线段树板子(主要是结构化得好看一些) Part Ⅰ区间加法+区间求和 洛谷P3372 基础中的基础 //luogu P3372 199 ...

  3. Linux学习8之Shell编程--基础正则表达式

    1. 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配的.grep.awk.sed等命令可以支持正则表达式. 通配符是用来匹配符合条件的文件名,通配符是完全匹配的.ls. ...

  4. P6327 区间加区间sin和 线段树 + 数学

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,有mmm次操作,每次操作分两种类型: (1)l,r,v(1)l,r,v(1)l,r,v,将al,al+1,...,ara_l ...

  5. 线段树(区间更改,区间查最值)模板

    线段树(区间更改,区间查最值)模板 主要重在理解线段树,理解了怎么改都可以,还有以后不要直接抄模板,要写出自己想的一份代码 &代码: #include <cstdio> #incl ...

  6. 基础正则表达式介绍与练习

    基础正则表达式介绍与练习 一.什么是正则表达式 在做文字处理或编写程序时,用到查找.替换等功能,使用正则表达式能够简单快捷的完成目标.简单而言,正则表达式通过一些特殊符号的帮助,使用户可以轻松快捷的完 ...

  7. 实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注、取关、发微博、获取用户微博列表

    const assert = require('assert'); const question = '实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注.取 ...

  8. python基础—正则表达式即re模块

    正则表达式(regular expression),就是字符匹配模式,而这个匹配规则在我们写爬虫进行数据提取,或者进行数据可视化进行数据清洗时经常用到,多样化的匹配规则在复杂的字符的情况提取数据时助我 ...

  9. LeetCode 57. 插入区间(合并区间+排序)(区间重叠问题汇总)

    题目描述 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interval ...

最新文章

  1. Mysql Cluster节点类型
  2. mysql数据库字符集设置
  3. 浅析企业网站排名低可能是哪些原因导致的呢?
  4. 【工具】TFT彩屏图片点阵取模工具,Img2Lcd图片取模软件,图片生成c语言头文件...
  5. go-ipfs-api在项目中的使用
  6. TODO monkey笔记,PC端执行和手机端执行
  7. matlab信道均衡,使用LMS算法做信道均衡时,更换信道传递函数效果很差
  8. 批量引号_RcoketMQ 批量发送和消息过滤
  9. 【codevs1079】回家
  10. (32)VHDL实现同步复位D触发器
  11. 年度影像旗舰vivo X70系列正式发布 售价3699元起
  12. Kotlin入门(18)利用单例对象获取时间
  13. 华为私密相册计算机找回密码,华为手机进入隐私空间的密码忘记了怎么办
  14. 保留地址就是私有地址吗?
  15. UG二次开发UFUN C NXOpen C++全套视频教程
  16. hdu 6080 度度熊保护村庄(floydS使用技巧)
  17. TI 参考设计 采用高分辨率位置插值的正弦/余弦编码器的接口
  18. 讲讲一条MySQL更新语句是怎么执行的?
  19. javascript 函数指针
  20. SpringCloud五大神兽快速入门

热门文章

  1. vue下载文件(zip格式),并解决中文乱码
  2. Python3实例分享_经纬度转换为地区和地址
  3. Oracle 补充日志分类和相关操作, logminer cdc实时同步数据变化,提取归档日志进行数据挖掘,相关代码实现
  4. 图的连通性 —— 连通性的相关知识
  5. 使用QT遇到的无法打开exe文件的问题解决思路
  6. 字节流java_Java基础教程——字节流
  7. AOP、Filter、拦截器,花落知多少
  8. PM的三六九等,初级跟高级的区别有哪些?
  9. 电脑中毒新解决方案之系统命令FType
  10. 无处不在的二八原理[0]:什么是二八原理?