/ 匹配<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. hdu6034[模拟] 2017多校1

    /*hdu6034[模拟] 2017多校1*/ //暴力模拟26个26进制数即可, 要注意进位 #include<bits/stdc++.h> using namespace std; t ...

  2. [luoguP2774] 方格取数问题(最大点权独立集)

    传送门 引入两个概念: 最小点权覆盖集:满足每一条边的两个端点至少选一个的最小权点集. 最大点权独立集:满足每一条边的两个端点最多选一个的最大权点集. 现在对网格染色,使得相邻两点颜色不同,之后把两个 ...

  3. mysql 游标的使用总结

    一.游标的基本概念 游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集. 本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次.下面分析 ...

  4. mybatis学习(五)——增删改查及自增主键的获取

    一.mybatis的增删改查 1.修改hotelMapper接口 package com.pjf.mybatis.dao; import com.pjf.mybatis.po.Hotel; publi ...

  5. java面试题之Thread和Runnable是什么关系?

    Thread实现了Runnable接口,使得run方法支持多线程: 因类的单一继承原则,推荐多实用Runnable接口

  6. 关于python数据类型的一些举例

    if True: name2=1 print(name2) 输出:1 if False: name1=1 print(name1) 报错: NameError: name 'name1' is not ...

  7. UVa11762 Race to 1

    期望DP 一个数只能分解成不大于它的数,那么转移构成拓扑关系. 试了一下预处理出不大于x的质数个数,然而程序并没有变快 /*by SilverN*/ #include<algorithm> ...

  8. 【BZOJ1018】堵塞的交通traffic(线段树,网格图,连通性)

    题意:一个2行C列的矩形网格图,网格上的每个点代表一个城市,相邻的城市之间有一条道路 一开始每条道路都是堵塞的,堵塞即为不可经过.经过一些操作后,可能某些道路通畅了,也可能某些道路堵塞了 多次询问,询 ...

  9. LeetCode OJ——Word Break

    http://oj.leetcode.com/problems/word-break/ 动态规划题目,重点是建立出模型来: fun(start,end) = fun(start,i)*fun(i+1, ...

  10. 重新实践《轻量级DJANGO》这本书

    从手到尾,手写的DJANGO,不借助命令,效果一样的呢. import os import sys import hashlib from django.conf import settings DE ...