/ 匹配<emphasis>这个tag标注的IP地址的RE:‘<emphasis>([0-9]+(\.[0-9]+){3})</emphasis>'

/ 锚定--anchor

/ 最好能养成按照字符来理解RE的习惯:例如 '^cat',不要理解为匹配以cat开头的行,而应该理解为匹配以c作为一行的第一个字符,紧接一个a,紧接一个t的文本;

/ '^$'匹配的是没有任何字符,包括空白字符的空行;

/ ^和$匹配的是一个位置,不是文本;

/ 问号和点号在字符租([])里不是元字符;

/ 排除--negate

/ egrep会在检查RE之前把文本行末尾的换行符去掉;

/ 'gr(a|e)y'中用括号来划定多选结构的范围(正常情况下,括号也是元字符);

/ 一个字符组([])只能匹配目标文本中的单个字符,而每个多选结构自身都可能是完整的RE,都可以匹配任意长度的文本;

/ 限制--constrain 不去分大小写--case-insensitive;

/ '\<'和'\>'用来匹配单词的开头和结束位置,其中<、>本身并不是元字符,只有当它们与斜线结合起来的时候,整个序列才具有特殊意义,这就是它们被称为“元字符序列”的原因;

/ “单词的起始位置”是一系列字母和数字(注意不包括符号)开始的位置,“结束位置”就是它们结尾的地方;

/ 问号表示可选项,把它加在一个字符后面,表示此处容许出现这个字符,不过他的出现并非匹配成功的必要条件;

/ 空格符也是普通字符之一;

/ 反向引用(backreference)引用的顺序是按照开括号从左到右出现的顺序进行的;

/ 反斜线--backslash 转义符--escape

/ 匹配引号内的字符串最简单的表达式:'  "[^"]*"  '

/ 匹配"12:30 pm"---'(1[012]|[1-9]):[1-5][0-9] (am|pm)'

/ 处理24小时制时间:把时间分为三部分:其一是上午(小时数从00到09,开头的0可选),其二是白天(小时数从10到19),其三是夜晚(小时数从20到23)--'0?[0-9]|1[0-9]|2[0-3]'

/ 由星号和问号限定的对象在“匹配成功”时可能并没有匹配任何字符,即使什么字符都不能匹配到,他们仍然会报告“匹配成功”;

/ '(?:...)'表示只分组不捕获;

/ '[□\t]*'与'(□*|\t*)'的异同:前者可以匹配若干空格符(也可以没有)以及若干制表符(也可以没有),不过并不容许制表符与空格符发的混合体;相反,前者能够匹配任意多个'□\t',对于字符串'\t□□',他可以匹配三次,第一次是制表符,后两次是空格符。

/ \s是表示所有表示空白字符(whitespace character)的字符组,包括空格符、制表符、换行符和回车符;

/ 修饰符---modifier 替换--substitution 订阅--subscription

/ 要求:保留小数点后两位数字,如果第三位不为零则也需要保留,去掉去他的数字,例如12.3750000000392或者12.375会被修正为'12.375',而37.500会被修正为'37.50',RE为s/(\.\d\d[1-9]?)\d*/$1/

/ 在字符组中的元字符不同于正在表达式中的元字符,在字符组内部,括号不再具有特殊含义,也不需要转义;

/ '^From:□(\s+)□\(([^()]*)\)'--\(、\)普通括号字符;

/ POSIX字符组:

[:alpha:]--字母字符

[:digit:]--数字字符

[:alnum:]--字母字符和数字字符

[:blank:]--空格和制表符

[:space:]--所有的空白字符([:blank:]、换行符、回车符及其他)

[:cntrl:]--控制字符

[:graph:]--非空字符(即空白字符、控制字符之外的字符)

[:print:]--类似[:graph:],但是包含空白字符

[:punct:]--标点符号

[:xdigit:]--十六进制中允许出现的数字(例如0-9a-fA-F)

[:lower:]--小写字母

[:upper:]--大写字母

/ 忽略优先量词:*?、+?、??、{num,num}?

量词在正常情况下都是“匹配优先(greedy)的”,匹配尽可能多的内容;相反,忽略优先量词会匹配尽可能少的内容,只需要满足下限,匹配就能成功;

/ 由星号限定的部分总是能够匹配,如果整个表达式都是由星号控制,它就能够匹配任何内容;

/ 匹配以反斜杠及换行符结尾的多行:'^\w+=[^\n\\]*(\\\n[^\n\\]*)*'

/ 匹配IP:'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',如果不支持,则可以用'\d\d?\d?'或者'\d(\d\d?)?'

/ 所在路径及文件名:'^(.*)/([^/]*)$'

/ 正则表达式无法匹配任意深度的嵌套结构;(例如多层括号嵌套);

/ 如果某个元素的匹配没有硬性规定任何必须出现的字符,那么他总能匹配成功;

/

[笔记] 精通正则表达式/Mastering Regular Expressions的更多相关文章

  1. 正则表达式备忘录-Regular Expressions Cheatsheet中文版

    正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...

  2. 正则表达式(Regular expressions)使用笔记

    Regular expressions are a powerful language for matching text patterns. This page gives a basic intr ...

  3. 精通正则表达式(第三版)—Mastering Regular Expressions,3rd Edition—读书笔记2

    1.肯定断言:必须匹配一个字符 排除型字符组:匹配未列出字符的字符组 2.范围表示法——列出范围内所有的字符 大多数情况下,不会影响执行速度.但是,某些实现方式不能完全优化字符组.所以,最好是有范围表 ...

  4. 精通正则表达式(第三版)——Mastering Regular Expressions,3rd Edition——读书笔记1

    基础知识介绍: 子表达式匹配 环视 引号内的字符串:"(^")*" 12小时制:(1[0123]|[1-9]):[0-5][0-9]*(am|pm) 24小时制:(([0 ...

  5. Introducing Regular Expressions 学习笔记

    Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4 ...

  6. Regular Expressions --正则表达式官方教程

    http://docs.oracle.com/javase/tutorial/essential/regex/index.html This lesson explains how to use th ...

  7. 自学Zabbix8.1 Regular expressions 正则表达式

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix8.1 Regular expressions 正则表达式 1. 配置 点击Adm ...

  8. 【Python学习笔记】Coursera课程《Using Python to Access Web Data 》 密歇根大学 Charles Severance——Week2 Regular Expressions课堂笔记

    Coursera课程<Using Python to Access Web Data > 密歇根大学 Charles Severance Week2 Regular Expressions ...

  9. Python之Regular Expressions(正则表达式)

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用 ...

随机推荐

  1. javascript基础 方法 函数 闭包 集合

    定义类 ,实例化对象类 ,调用 为类对象增加数据成员 --

  2. Welcome-to-Swift-21协议(Protocols)

    协议定义了一个方法的蓝图,属性和其他适合特定任务或功能的要求.协议实际上并不提供一个这些要求的实现,它只是描述了一个实现会是什么样子.协议可以通过一个类,结构或枚举提供这些要求的具体实现.满足要求的任 ...

  3. 【Luogu】P4358密钥破解(Pollard Rho)

    题目链接 容易发现如果我们求出p和q这题就差不多快变成一个sb题了. 于是我们就用Pollard Rho算法进行大数分解. 至于这个算法的原理,emmm 其实也不是很清楚啦 #include<c ...

  4. 【Luogu】P3521ROT-Tree Rotations(线段树合并)

    题目链接 神奇的线段树合并qwq   不过就思路而言很好想…… 观察到一棵树无论怎么交换两棵左右子树,子树内部的最优逆序对并没影响……决策只影响左右子树之间的逆序对…… 于是线段树合并直接乱搞就好啦 ...

  5. [USACO Section 2.3] Cow Pedigrees (动态规划)

    题目链接 Solution 我DP太菜啦... 考虑到一棵二叉树是由根节点以及左儿子和右儿子构成. 所以答案其实就是 左儿子方案数*右儿子方案数 . 状态定义: \(f[i][j]\) 代表深度为 \ ...

  6. 使用JWT实现Token认证

    为什么使用JWT? 随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用 ...

  7. Oracle 的安装与使用

    一.文件下载 安装的是Oracle 11G,安装文件名为OracleXE112_Win32.zip, 官方文件下载地址:http://www.oracle.com/technetwork/databa ...

  8. Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1

    3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...

  9. JAVA课程设计---多源教学数据管理系统

    1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2.个人负责模块或任务说明 (1)到控制台实现GUI界面中浏览文件并选取文件的功能. ...

  10. MinGW 使用和创建 DLL 应注意的问题

    MinGW 是 GCC 的 Windows 版本,稳定版已经到了 4.5.2,功能和性能上很好,感觉不比 Microsoft 自家的 VC 差啊.但是 MinGW 下使用和创建 DLL 倒是要特别注意 ...