<<鬼斧神工之正则表达式>>笔记整理

第1章 初识正则表达式

正则表达式定义

  • 正则表达式是一种字符串搜索和匹配的工具

正则表达式应用举例

  • 手机输入法
  • Windows文件搜索
  • Linux列出文件命令
  • 网站用户注册

第2章 正则表达式函数解析

 

PHP中常用的正则表达式函数

  • $pattern = 正则表达式
  • $subject = 匹配的目标函数
  • preg_match($pattern, $subject)
  • preg_match_all($pattern, $subject, array &$matches)

Code:

$pattern = ‘/[0-9]/’;

$subject = ‘weur3ui76as83s0tk9‘;

$m1 = $m2 = array();

$t1 = preg_match($pattern, $subject, $m1);

$t2 = preg_match_all($pattern, $subject, $m2);

show($m1);

echo ‘<hr />‘;

show($m2);

echo ‘<hr />‘;

show($t1. ‘||‘ .$t2);

  • preg_replace($pattern, $replacement, $subject)
  • preg_filter($pattern, $replacement, $subject)

Code:

$pattern = array(‘/[0123]/‘, ‘/[456]/‘, ‘/[789]/‘);

$subject = array(‘weu‘, ‘r3ui‘, ‘76as83‘, ‘s‘, ‘0tk9‘);

$replacement = array(‘万‘, ‘事‘, ‘屋‘);

$str1 = preg_replace($pattern, $replacement, $subject);

$str2 = preg_filter($pattern, $replacement, $subject);

show($str1);

echo ‘<hr />‘;

show($str2);

  • preg_grep($pattern, array $input)

    Code:

$pattern = ‘/[0-9]/‘;

$subject = array(‘weu‘, ‘r3ui‘, ‘76as83‘, ‘s‘, ‘0tk9‘);

$arr = preg_grep($pattern, array $input);

show($arr);

  • preg_split($pattern, $subject)

Code:

$pattern = ‘/[0-9]/’;

$subject = ‘银2桑3, 3么么哒~‘;

$arr = preg_split($pattern, $subject);

show($arr);

  • preg_quote($str)

    Code:

$str = ‘qwer{asdf}[1234]‘;

$str = preg_quote($str);

show($str);

PHP正则表达式函数总结

  • 都以preg_开头
  • 除preg_quote函数外,第一个参数都是正则表达式
  • preg_match - 表单炎症等
  • preg_match_all - 非法词语过滤等

第3章 正则表达式基本语法

界定符

  • 表示一个正则表达式的开始和结束
  • /[0-9]/

正则表达式工具

原子

  • 可见原子 - Unicode编码表中用键盘输出后肉眼可见的字符
  • 有哪些?

- 标点 ; " _ ? . 等

- 英文字母数字 a-z, A-Z, 0-9

- 汉字、日文、阿拉伯文等其他语言文字

- ∑, ∈, ∮, ≌ 等数理化公式符号

- 其他可见字符

  • 不可见原子 - Unicode编码表中用键盘输出后肉眼不可见的字符
  • 有哪些?

- 换行符 \n

- 回车 \r

- 制表符 \t

- 空格

- 其他不可见符号

(ps: Unicode编码转换工具: http://tool.oschina.net/encode)

 

元字符

  • 原子的筛选方式

- |     匹配两个或者多个分支选择

- []     匹配方括号中的任意一个原子

- [^]   匹配除方括号中原子之外的任意字符

  • 原子的集合

- .     匹配除换行符之外的任意字符

- \d   匹配任意一个十进制数,即[0-9]

- \D  匹配任意一个非十进制数,即[^0-9]

- \s   匹配一个不可见原子,即[\f\n\r\t\v]

- \S   匹配一个可见原子,即[^\f\n\r\t\v]

- \w  匹配任意一个数字、字母或下划线,即[0-9a-zA-Z_]

- \W  匹配任意非一个数字、字母或下划线,即[^0-9a-zA-Z_]

量词

  • {n}      表示前面的原子恰好出现n次
  • {n,}     表示前面的原子最少出现n次
  • {n,m}  表示前面的原子最少出现n次,最多出现m次
  • *         匹配0次、1次或者多次其之前的原子,即{0,}
  • +         匹配1次或者多次其之前的原子,即{1,}
  • ?         匹配0次或者1次其之前的原子,即{0,1}

边界控制与模式单元

  • ^     匹配字符串开始的位置
  • $     匹配字符串结尾的位置
  • ()     匹配其中的整体为一格原子
时间: 2024-11-10 11:53:03

<<鬼斧神工之正则表达式>>笔记整理的相关文章

《iOS应用架构谈 view层的组织和调用方案》笔记整理

结束前段时间的忙碌,近来工作没什么任务.就趁上班时间学习一点东西. 读完了Casa Taloyum的<iOS应用架构谈 view层的组织和调用方案>,写的很认真,很详尽,收获颇丰.着手整理下目前自己能领悟到的一些知识. 先分享下:http://casatwy.com/iosying-yong-jia-gou-tan-viewceng-de-zu-zhi-he-diao-yong-fang-an.html 代码结构 先声明一点,我们之所以注重代码结构和格式,是为了代码的可读性和后期的可维护性,当

iOS应用架构谈 view层的组织和调用方案(转~地址)

来自:iOS应用架构谈 view层的组织和调用方案 http://www.devzhou.com/2017/07/19/casa-ios-architecture-view/

iOS应用架构谈 view层的组织和调用方案

前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二篇出来了. 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了

iOS应用架构谈 view层的组织和调用方案(转)

前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二篇出来了. 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了

iOS应用架构谈(二):View层的组织和调用方案(上) 作者 田伟宇 发布于 2015年5月25日

iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第二篇,主要讲View层的组织和调用方案.上篇主要讲View层的代码结构.布局,以及一些最佳实践的讨论. 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在必须清楚认识到:View层的架构一旦实现或定型,在App发版后可

iOS应用架构谈(二):View层的组织和调用方案(中)

iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第二篇,主要讲View层的组织和调用方案.中篇主要讨论MVC.MVCS.MVVM.VIPER等架构在iOS开发中的应用. 关于MVC.MVVM等一大堆思想 其实这些都是相对通用的思想,万变不离其宗的还是在开篇里面我提到的那三个角色:数据管理者,数据加工者,数据展示者.这些五花八门的思想,不外乎就是制订了一个规范,规定了这三个角色应当如何进行数据交换.但同时这些也是争议最

iOS应用架构谈(三):View层的组织和调用方案(下)

iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第二篇,主要讲View层的组织和调用方案.下篇主要讨论做View层架构的设计的一些心法. 本门心法 重剑无锋,大巧不工. ---- <神雕侠侣> 这是杨过在挑剑时,玄铁重剑旁边写的一段话.对此我深表认同.提到这段话的目的是想告诉大家,在具体做View层架构的设计时,不需要拘泥于MVC.MVVM.VIPER等规矩.这些都是招式,告诉你你就知道了,然后怎么玩都可以.但是心

OS应用架构谈(二):View层的组织和调用方案(中)

OS应用架构谈(二):View层的组织和调用方案(中) 作者 田伟宇 发布于 2015年5月28日 | 注意: ArchSummit全球架构师峰会(北京)2015年12月18-19日,了解更多详情!讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第二篇,主要讲View层的组织和调用方案.中篇主要讨论MVC.MVCS.MVV

iOS应用架构谈-part2 view层的组织和调用方案

前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二篇出来了. 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构. 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了

[转] iOS应用架构谈 网络层设计方案

原文地址:http://casatwy.com/iosying-yong-jia-gou-tan-wang-luo-ceng-she-ji-fang-an.html iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 前言 网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大.另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking