11.分组

你可以使用括号表示分组:

  • 通过使用 Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day 匹配一周中的某一天
  • (\w*)ility  与 \w*ility 相同。都是匹配一个由”ility”结尾的单词。稍后我们会讲解,为何第一种方法更加有用。
  • 表示匹配一对括号。
  • [()]表示匹配任意一个左括号或者一个右括号
  • (red|blue)表示匹配red或者blue或者是一个空字符串
  • abc()def与abcdef相同
  • (red|blue)?与(red|blue|)相同
  • \w+(\s+\w+)表示匹配一个或多个由空格分隔的单词

示例

\w+\W+\w+\W+\w+  =  \w+(\W+\w+){2}

\w+\W+\w+\W+\w+\W+\w+\W+\w+\W+\w+  =  \w+(\W+\w+){5}

12.单词分隔符

  • \b表示匹配一个单词分隔符
  • \b\w\w\w\b表示匹配一个三字母单词
  • a\ba表示匹配两个a中间有一个单词分隔符。这个正则表达式永远不会有匹配的字符,无论输入怎样的文本示例

13.换行符

一篇文本中可以有一行或多行,行与行之间由换行符分隔,比如

LINE一行文字

LINE BREAK 换行符

LINE一行文字

LINE BREAK 换行符

...

LINE一行文字

LINE BREAK 换行符

注意,所有的文本都是以一行结束的,而不是以换行符结束。但是,任意一行都可能为空,包括最后一行。行的起始位置,是在换行符和下一行首字符之间的空间。考虑到单词分隔符,文本的起始位置也可以当做是首行位置。最后一行是最后一行的尾字符和换行符之间的空间。考虑到单词分隔符,文本的结束也可以认为是行的结束。基于此概念:

  • ^表示匹配行的开始位置
  • $表示匹配行的结束位置
  • ^&表示一个空行
  • ^.*& 表示匹配全文内容,因为行的开始符号也是一个字符,"."会匹配这个符号。找到单独的一行,可以使用 ^.*?$
  • \^\$表示匹配字符串“^$”
  • [$]表示匹配一个$。但是,[^]不是合法的正则表达式。记住在方括号中,字符有不同的特殊含义。要想在方括号内匹配^,必须用[\^]

14.文本分界

在很多的正则表达式实现中,将^和$作为文本的开始符号和结束符号。

还有一些实现中,用\A和\z作为文本的开始和结束符号。

15.捕获组

正则表达式(\w*)ility表示匹配以ility结尾的词。第一个被捕获的部分是由\w*控制的。比如,输入的文本内容中有单词accessibility,那么首先被捕获的部分是accessib。如果输入的文本中有单独的ility,则首先被捕获的是一个空字符串。

总结:

  • 字符: a b c d 1 2 3 4 etc.
  • 字符类: . [abc] [a-z] \d \w \s
    • . 代表任何字符
    • \d 表示“数字”
    • \w   表示”字母”, [0-9A-Za-z_]
    • \s   表示 “空格, 制表符,回车或换行符”
    • 否定字符类: [^abc] \D \W \S
  • 重复: {4} {3,16} {1,} ? * +
    • ? 表示 “零次或一次”
    • * 表示 “大于零次”
    • + 表示 “一次或一次以上”
    • 如果不加上?,所有的重复都是最长匹配的(贪婪)
  • 分组: (Septem|Octo|Novem|Decem)ber
  • 词,行以及文本的分隔: \b ^ $ \A \z
  • 转义字符: \1 \2 \3 etc. (在匹配表达式和替换表达式中都可用)
  • 元字符: . \ [ ] { } ? * + | ( ) ^ $
  • 在字符类中使用元字符: [ ] \ - ^
  • 使用反斜杠可以忽略元字符: \

转载于:https://www.cnblogs.com/CoffeeEddy/p/5615374.html

正则表达式 学习笔记(三)相关推荐

  1. 正则表达式 学习笔记1.3

    书接上一回: 实例五:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /& ...

  2. python3常用模块_Python学习笔记三(常用模块)

    Python 学习笔记三 (常用模块) 1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称( ...

  3. Mongodb使用学习笔记(三)

    文章目录 Mongodb使用学习笔记(三) 1. MongoDB 更新文档 1.1 update() 1.2 save() Mongodb使用学习笔记(三) 1. MongoDB 更新文档 参考:Mo ...

  4. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  5. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  6. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  7. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  8. 正则表达式 学习笔记4.3

    下面看看逆序环视结构: public class GeneralSix { public static void main(String[] args) { String[] strings = ne ...

  9. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  10. 正则表达式 学习笔记3.4

    第一段为合法html代码,第二段为不合法html代码.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...

最新文章

  1. RH033 Unit 9 vim: An Advanced Text Editor
  2. python读取文件读不出来-python文件读取失败怎么处理
  3. SQL SERVER 系列(7)数据表排序和聚集函数
  4. linux cp和rm命令
  5. 25LINQ拾遗及实例
  6. Java Jvm 中的垃圾回收机制中的思想与算法 《对Java的分析总结》-四
  7. javascript 停止事件冒泡以及阻止默认事件冒泡
  8. 【es】 check-rollover-ready read index [alinas-lcc] is not the wtiter index for alians [index-xx]
  9. HeadFirstJava——8_接口与抽象类
  10. LCD1602液晶显示设计
  11. JAVA 日期格式化
  12. 超简单的Oracle 数据库安装教程(Oracle安装包)
  13. 用天文方法计算二十四节气
  14. 全局zomm缩放后echarts鼠标偏移的问题(鼠标触发提示框位置有偏差)
  15. kettle-新建资源库connect资源库灰色解决
  16. 新浪微博Android客户端开发之OAuth认证篇
  17. 作业5管理用户、组及权限
  18. 视频教程-SpringBoot后台CRM项目(第一季)-Java
  19. 计算机技术应用体验,2018教师信息技术应用体验学习个人心得体会2篇
  20. .Net C# 发送带背景图html邮件(解决Outlook不显示背景图问题)

热门文章

  1. 11g r2 rac 11.2.0.2升级11.2.0.2.3 [PSU patch 12419353]
  2. 策略思维:市场的三个放弃点
  3. 考博英语是什么水平?
  4. 以面试官的经验分享毕业生和初级程序员通过面试的技巧
  5. WebGIS开发者入门
  6. 连接SQL server2008,并在SQL server2008中实现MySQL中group_concatd的分组;使用jsp和servlet实现页面的跳转和重写
  7. MATLAB 8乘8西洋跳棋棋盘绘制
  8. java是自由软件吗_开源LGPL——如何宣告自己的程式为自由软件
  9. GD32F405RGT6定时器固件库(所有定时器的配置(12个))
  10. python baseMap 实现 地图着色问题