蓝墨云班课 -- 正则表达式作业

具体描述:

参考老师在博客园的 Intellj IDEA 简易教程中的单元测试,以TDD的放式学习云班课中“正则表达式简易教程.pdf”,在此贴出测试代码的码云链接和测试截图,测试案例不少于40个,要包含:元字符,字符转义,重复,字符类,分枝条件,反义,分组,后向引用,贪婪与懒惰等情况。

准备好上课对自己的测试和学习内容讲解。

内容:

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。

(1)元字符

常用元字符:
. 表示除了换行符之外任意一个字符
\s 空格字符(空格键、tab、换行、回车)
\S 非空格字符([^\s])
^ 一行的开始
$ 一行的结尾
[] 匹配方括号内的一个字符,例如:[abc]表示字符a,b,c中的任意一个(与a|b|c相同)

(2)字符转义

通常是指在正则表达式中有特殊含义的字符需要通过转义来使用,例如指示重复零次或更多次的*符号,若是需要使用时需要使用‘*’来匹配。

(3)重复

表示次数的元字符:

  • 重复零次或更多次   例如:a*匹配零个或者多个a
  • 重复一次或更多次   例如:a+匹配一个或者多个a

    ? 重复零次或一次 例如:a?匹配零个或者一个a
    {n} 重复n次 例如:a{4}匹配4个a
    {n,} 重复n次或更多次 例如:a{4,}匹配至少4个a
    {n,m} 重复n到m次 例如:a{4,10}匹配4-10个a

(4)字符类

可在方括号里列出想查找的数字,字母或数字,空白字符等。

(5)分枝条件

相当于逻辑关系中的或关系,有多个分支,只需要一个分支符合即可,分支间使用‘|’符号隔开。

(6)反义

匹配不在字符类指定范围内的字符。

(7)分组

用括号括住来实现分组捕获,如/.+(\d+).+/捕获字符串中的所有数字部分,然后通过组号就可以抽取出各分组匹配的字符文本或者通过反向引用的方式对分组中的文本进行替换。

(8)后向引用

后向引用用于重复搜索前面某个分组匹配的文本。

(9)贪婪与懒惰

贪婪匹配:正则表达式一般趋向于最大长度匹配;懒惰匹配:就是匹配到结果就好,就少的匹配字符。

具体的测试代码:

public class RegexTest extends TestCase{@Testpublic void testMatches(){//元字符assertEquals(true, "CQB".matches("\\w.\\w")); //.表示除了换行符之外任意一个字符assertEquals(true, "1258".matches("\\d+")); //匹配1个或更多连续的数字assertEquals(true, "0792-69831245".matches("0\\d{3}-\\d{8}"));//匹配4位区号+8位电话号码assertEquals(true, "quit".matches("\\bq\\w*\\b"));//匹配以字母q开头的字符串assertEquals(true, "apple".matches("\\b\\w{5}\\b"));//匹配长度位5个字符的字符串assertEquals(true, "75875832532".matches("^\\d{5,12}$"));//^和$代表分别代表行的开始和结束,重复5~12次//字符转义assertEquals(true, "Q*N".matches("\\w\\*\\w"));//要查找*,需要用\*assertEquals(true, "Q\\N".matches("\\w\\\\\\w"));//要查找\,需要用\\assertEquals(true, "Q.N".matches("\\w\\.\\w"));//要查找.,需要用\.//重复assertEquals(true, "qi".matches("qi*")); //*:重复零次或更多次assertEquals(true, "qiiiiii".matches("qi*"));//*:重复零次或更多次assertEquals(true, "QQ20145226".matches("QQ\\d+"));//+:重复一次或更多次assertEquals(true, "qqqqq".matches("q{5}"));//{n}:重复n次assertEquals(true, "qqq".matches("q{2,}"));//{n,} 重复n次或更多次assertEquals(true, "qqqqqqqq".matches("q{6,9}"));//{n,m} 重复n到m次//字符类:在方括号里列出想查找的数字,字母或数字,空白字符等assertEquals(true, "q".matches("[quit]"));//匹配[]内的字母或符号assertEquals(true, "m".matches("[a-z]"));//匹配[ - ]给出的字母或数字范围assertEquals(true, "(0792)69831245".matches("\\(?0\\d{3}[) -]?\\d{8}"));//(1个0,3个数字\d{2})或-或空格出现1次或不出现,八个数字\d{8}。//分枝条件assertEquals(true, "0792-6983124".matches("0\\d{2}-\\d{8}|0\\d{3}-\\d{7}"));//匹配三个数字-八个数字,或者四个数字-七个数字assertEquals(true, "079-69831245".matches("\\(?0\\d{2}\\)?[- ]?\\d{8}|0\\d{2}[- ]?\\d{8}|\\(?0\\d{3}\\)?[- ]?\\d{7}|0\\d{3}[- ]?\\d{7}"));assertEquals(true, "2".matches("((1|0?)[0-9]|[1-9][0-9])"));//分组assertEquals(true, "121.353.678.999".matches("(\\d{1,3}\\.){3}\\d{1,3}"));//匹配每三个数字加一个小数点,共12个数字assertEquals(true, "219.241.20.3".matches("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"));//匹配正确的ip地址//反义assertEquals(true, "adef".matches("\\S+"));//匹配任意不是空白符的字符assertEquals(false, "12aaa".matches("\\D+"));//匹配任意非数字的字符assertEquals(false, "xxerey".matches("[^xy]"));//匹配除了[]内字符以外的任意字符assertEquals(true, "<quit>".matches("<q[^>]+>"));//匹配用尖括号括起来的以a开头的字符串//后向引用assertEquals(true, "cheers cheers".matches("\\b(\\w+)\\b\\s+\\1\\b"));//匹配重复的单词assertEquals(true, "cheers cheers".matches("\\b(?<bang>\\w+)\\b\\s+\\k<bang>\\b"));//指定组名//贪婪与懒惰assertEquals(true, "qcbai".matches("q.*i"));//贪婪,匹配最长的以q开始,以i结束的字符串assertEquals(true, "qcbai qci qqwai".matches("q.*i"));assertEquals(true, "qcbai".matches("q.*?i"));//懒惰,匹配最短的,以q开始,以i结束的字符串}
}

运行后的结果为:

转载于:https://www.cnblogs.com/bestixyh/p/6942137.html

补交20145226蓝墨云班课 -- 正则表达式作业相关推荐

  1. 补交20145226蓝墨云班课 -- MyCP

    蓝墨云班课 -- MyCP.java 具体描述: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt ...

  2. 补交20145226蓝墨云班课 -- MyOD

    蓝墨云班课 -- MyOD.java 具体描述: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能. 提交测试代码和运行结果截图,加上学号水印,提 ...

  3. 补交20145226蓝墨云班课 -- 后缀表达式

    蓝墨云班课 -- 后缀表达式 具体描述: 后缀表达式 内容: ###基本概念 后缀表达式,也叫逆波兰式,不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考 ...

  4. 补交20145226蓝墨云班课 -- Arrays和String单元测试

    蓝墨云班课 -- Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt ...

  5. linux java -cp lt; .txt_补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能...

    蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...

  6. 基于蓝墨云平台的计算机教学,基于蓝墨云班课的中职计算机“分层教学”模式探究...

    崔月娇 一.教学现状概述 一方面,我校是面向全国招生,部分欠发达地区的学生由于资源配置导致计算机基础相当薄弱,而来自发达地区的学生早早地接触了计算机,部分计算机基础操作已相当熟练,学生的计算机水平参差 ...

  7. 蓝墨云班课计算机测试题答案,20155317 第一周蓝墨云班课考题

    20155317 2016-2017-2 蓝墨云班课考题第2周 上周蓝墨云班课考题 1 ( 单选题 | 1 分) Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比. ...

  8. 20155317 2016-2017-2 蓝墨云班课考题第2周

    20155317 2016-2017-2 蓝墨云班课考题第2周 三: 1.用gcc -g编译vi输入的代码 2.在main函数中设置一个行断点 3.在main函数增加一个空循环,循环次数为自己学号后4 ...

  9. 使用springboot+vue+element-ui模仿蓝墨云班课

    声明:前端大量CSS样式从原网站复制来的,蓝墨云班课也十分好用,大家可以了解下 项目地址:前端+后端+数据库 https://gitee.com/cao-qiangqiang/a04test07/tr ...

最新文章

  1. MaterialIDsRandomGenerator for 3dsMax使用教程
  2. 新浪微博oauth2.0弹出验证dialog中输入框被输入法覆盖的解决办法
  3. UA MATH571B 试验设计V 析因设计简介
  4. pandas 笔记:合并操作
  5. 推荐一个小巧轻便的RSS阅读器
  6. lua正则替换_lua 字符串 正则表达式 转义 特殊字符
  7. poj3009深度优先搜索挑战程序设计竞赛
  8. 利用EA根据sql脚本生成数据库文档
  9. Script To Monitor RDBMS Session UGA and PGA Current And Maximum Usage Over Time
  10. java编程新手自学手册_Java Web编程新手自学手册
  11. 数值优化——牛顿迭代法求解函数零点
  12. java fop_java – 未找到类FOP
  13. 快速画圆切线lisp_autolisp中画两圆公切线的程序怎么写?
  14. 隐私集合求交(PSI)协议研究综述
  15. Ngnix:防止恶意域名解析
  16. android native 代码内存泄露 定位方案
  17. 华擎主板bios设置图解_华擎主板设置BIOS的图解教程
  18. 电商社区怎么做?看服饰大佬如何通过粉丝圈激活客户
  19. 基于Java的聊天即时通讯软件的设计与实现
  20. centos7 更新网络源,下载扩展源时出现“one of the configured repositories failed”提示,解决方案

热门文章

  1. 汇编 bne 1b和bne 1f浅析
  2. C/C++程序的内存开辟
  3. linux下postgresql创表添加数据
  4. 婴幼儿体重在线计算机,【婴儿体重计算器标准_婴儿体重计算器标准专题】- 天鹅到家...
  5. 【渝粤教育】国家开放大学2018年春季 8639-21T食品营养与健康 参考试题
  6. 日期计算excel_在Excel中计算日期范围内的项目
  7. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
  8. 网易mumu模拟器adb连接配置
  9. staf框架_测试自动化以及与STAF / STAX的持续集成
  10. thingworx项目-mushup