/ 匹配<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. CCF认证题 搜索题

    栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能 ...

  2. Codeforces963B - Destruction of a Tree

    Portal Description 给出一个\(n(n\leq2\times10^5)\)个点的树,每次可以删除一个度数为偶数的点及其相连的边,求一种能够删掉整棵树的方案. Solution 简单起 ...

  3. 刷题总结——xor(ssoj)

    题目: 题目背景 OURCE:NOIP2015-SHY-7 题目描述 求一棵带边权的树的一条最大 Xor 路径的值.这里的“路径”不一定从根到叶子结点,中间一段路径只要满足条件也可以. 输入格式 第一 ...

  4. Java面试之JVM原理总结

    1.什么是JVM? 答:JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现 ...

  5. APM-应用性能管理

    APM(应用性能管理) 在信息科学和系统控制领域,APM致力于监控和管理应用软件性能和可用性.通过监测和诊断复杂应用程序的性能问题,来保证软件应用程序的良好运行(预期的服务),APM已经商用 基本定义 ...

  6. d3 比例尺

    .domain([, ]) 定义域范围 .range([, ]) 值域范围 var scale = d3.scale.linear() .domain([, ]) .range([, ]); 将100 ...

  7. C#中DataTable中Rows.Add 和 ImportRow 对比

    最近参加项目中,数据操作基本都是用DataTable的操作,老代码中有些地方用到DataTable.Rows.Add又有些代码用的DataTable.ImportRow,于是就对比了一下 VS查询说明 ...

  8. hdu 1979 剪枝暴搜

    Fill the blanks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. Mondriaan's Dream(poj 2411)

    题意:在n*m的方格里铺1*2的骨牌,有多少种方案 /* 第一次做插头DP,感觉和状压差不多. 这道题是利用上一行的状态来更新下一行的状态. 1代表上一行这个位置填了一个竖的(即本行可以填): 0代表 ...

  10. 反汇编->C++虚函数深度分析

    先来查看一简单例子 #include<iostream> using namespace std; class Base{ public: virtual void f() { cout ...