imooc正则表达式学习笔记

PHP正则表达式

1、正则表达式作用

字符串搜索和匹配的工具。

(1)* 正则表达式通配符。

Windows搜索,*.jpg

Linux命令,ls -l /dev/sda*

(2)正则表达式验证邮箱

2、PHP中的正则表达式

//php对象打印

if(is_array($var) || is_object($var)){

print_r($var);

}else{

echo $var;

}

PHP中正则表达式的函数

(1)preg_match,preg_match_all

作用:在目标字符串中查找正则表达式匹配

用法:

$num = preg_match($pattern,$subject,array &$matches)

返回值:

$num :返回匹配的个数。

$matches:返回匹配的对象。

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

$subject = ‘wsijd09dfasd9dsf8fdas‘;

$m1=$m2=array();

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

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

$m1[0] = 0;//一维数组

//$m2二维数组,$m2[0]--> array(0,9,9,8)

(2)preg_replace,preg_filter

作用:在目标字符串中查找正则表示式,替换成其他字符串

普通字符串替换

str_replace(find,replace,string,count)

用法:

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

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

preg_filter特殊用法

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

$subject = array(‘weuy‘,‘r3ui‘,‘78as83‘,‘s‘,‘0ck9‘);

$replacement= array(‘慕‘,‘女‘,‘神‘);

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

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

//$array1 里面会返回全部数组,$array2里面元素只有发生匹配的才返回。

(3)preg_grep

用法,只匹配不替换。

preg_grap($pattern,array $input)

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

$subject = array(‘weuy‘,‘r3ui‘,‘78as83‘,‘s‘,‘0ck9‘);

(4)preg_splite

用法,分割目标字符串。

$array = preg_splite($pattern,$subject);

explode($str,$subject);

(5)preg_quote

用法,对目标字符串中可能存在的正则表达式运算符进行转义。

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

$str = preg_quote($str);

//qwer\{asdf\}\[1234\]

总结

preg_match-验证表单

preg_replace-非法词语过滤

3、正则表达式基本语法

(1)界定符

/[0-9]/

*http://regexpal.com/

(2)原子,通常是unicode编码中的一个字符

可见原子,不可见原子。

汉字,‘\u7ea6\u5417‘-->‘约吗‘,利用转化之后的编码进行匹配。

运算符符号,转义\\,\$,

不可见原子,空格、tab制表符、回车。

空格-->键盘空格,tab制表符-->\t,回车-->\n。

(3)元字符

原子的筛选方式,归类缩写。

-| 匹配两个或者多个,[^\n]

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

-[^] 排除方括号中的原子之外

Duang~|duang~ 匹配两种

[Dd]uang~,[]中拿出一个。

[^789],必须是[^样式。[78^9]意义完全不同。

[a-zA-Z0-9_]连续的写法。

. 除了换行符之外的全部字符

\d 任意十进制数字

\D 非十进制数字

\s 不可见原子

\S 可见原子

\w 任意数字字母_

\W 非数字、字母_

(4)量词

{n},表示其前面的原子恰好出现n次

{n,} 最少出现n次

{n,m} 出现n到m次

*,0次1次多次{0,}

+,1次多次{1,}

?,0次1次{0,1}

例子 555->5{3};[a-zA-Z]{2},连续两个字符;\w{4};\w*,只要是数字字母连续匹配在一起的;

(5)边界控制和模式单元

l ^ 匹配字符串开始的位置

l $ 匹配字符串结束的位置

l () 其中的整体为一个原子

例子:***Duang

^Duang~,就不会匹配。此时强制D之前不会出现任何字符。~强制目标字符串必须以g结束,后面不可以有任意字符。

(D|d)uang,[Dd]uang

Duang duang

(D|d)当做一个原子。

(6)修正模式

l 贪婪匹配

l 懒惰模式

发生多种匹配情况是,贪婪匹配比较长的,懒惰匹配短的。

例子:

$pattern = ‘/imooc.+123/‘;

$subject = ‘i love imooc__123123123‘;

$matches = array();

preg_match($pattern,$subject,$matches);

$matches[0]=‘imooc__123123123‘;

默认情况下,是采用贪婪匹配。

$pattern =‘/imooc.+123/U‘;

$matches[0]=‘imooc__123‘;

  • U-懒惰模式
  • i-忽略大小写
  • x-忽略空白
  • s-‘.‘匹配换行符在内的所有字符

例子:

$pattern =‘/i Mo oc.+123/Uix‘;

$subject = ‘I love imooc__123123123‘;

x忽略正则表达式中的空白字符

时间: 2024-10-28 12:23:51

imooc正则表达式学习笔记的相关文章

正则表达式学习笔记---揭开正则表达式的神秘面纱

正则表达式学习笔记 如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,十有八九的人会提到正则表达式:如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式.那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?本文将就此展开介绍,希望能够对那些渴望了解和掌握正则表达式的读者有所助益. 入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到

正则表达式学习笔记系列----1

正则表达式是一种字符模式,在匹配文本文件的内容的时候,使用一组特殊的符号,匹配出我们想要的内容. 为什么用正则表达式 搜索(匹配)出我们想要的看到的精简的内容. 正则表达式的元字符: 元字符 功能 样例 匹配样例 ^       行首定位符           /^root/ 匹配以root开头的行 $         行尾定位符           /bash$/ 匹配以bash结尾的行 .         匹配单个字符       /l.ve/ 匹配love,live等等,在l和v中间有一个

JavaScript正则表达式学习笔记之一 - 理论基础

自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月??.当时信誓旦旦说的定期写篇博客的计划也就泡汤了??,不过好在最近有空,顺便总结一下这两个月遇到的几个问题.第一个问题就是项目中用到了一些正则才发现之前被自己忽略的正则是时候补一补了.恰逢今天周六??,就把自己学习JavaScript正则表达式的笔记整理成文,写了这篇关于正则表达式理论基础的文章,希望本文能对有需要的同学提供帮助.号外:本文相对基础,大神请忽略??. 一. 基本概念 正则表达式是用于匹配字符串中字符组合的模式. 一种几乎可

#正则表达式# 学习笔记

以下是我学习正则表达式过程中的学习笔记:详细学习教程推荐正则表达式30分钟入门教程 特殊代码/元字符: \b:单词的开始或结尾. 例如:正则表达式为male,则male或abcmale22都能匹配到.         正则表达式为\bmale\b,则abcmale22不会被匹配到 . :除了换行符以外的任意字符    * :前面的字符可以是任意数量(可以是0次) +:前面的字符可以是任意数量(1次或更多次)      例如:.* 可匹配任意数量不包含换行符的字符      例如:a*可匹配任意数

正则表达式学习笔记(四)

正则表达式经过前面的学习,已经有了个基本的认识,这里还有关于平衡组和递归匹配的相关知识没有提到,以后再补充学习,暂时这些. 这四篇学习笔记是看了<正则表达式30分钟入门教程>实验得来的,原文的地址:http://www.oschina.net/question/12_9507,感谢原文作者. 这篇文章写得很好,我这篇学习笔记,也是对这篇文章的理解,不同的是,我多了操作.

JavaScript正则表达式-学习笔记(不定期更新)

JavaScript权威指南学习笔记,禁止转载! 8.正则表达式 在常见的字符串检索或替换中,我们需要提供一种模式表示检索或替换的规则. 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 使用: /\d\d\d/.test("123");  //true new RegExp("Bosn").test("Hi,Bosn");  //true 正则基础: . 任何字符(除换行符以外) /-/.test('[email prote

计算机要从娃娃抓起---------正则表达式(学习笔记一)

这篇主要是将正则,学习新东西,我记得老师说过一个好方法,要带着疑问去学习,不能光看理论,你要一直想着这个东西是干嘛的,怎么用,用在哪,我觉得的说的很好.所以在看的时候要一直想着这些问题. 这是本喵的学习笔记可能有很多不足之处,希望大家能多提意见! 开始吧,上课! 什么是正则表达式? 正则:也叫规则,能让计算机读懂人类的规则. ( 注意:正则都是都是操作字符串的) 正则的写法: var re =/a/;     这里写两个//的话系统会认为这是注释,所以最好写点东西. var re = new R

30分钟入门正则表达式 学习笔记

原文 有一个问题,在此记录: 在负向零宽断言里面,匹配q后面不是u的单词. 使用 \b\w*q(?!u)\w*\b 不能解决 qsqu这种情况. 即qs已经消耗了负向零宽断言,但是仍然存在qu的这种情况. 学习笔记: \b #元字符 只匹配一个位置 \bhi\b #精确查找hi这个单词 \bhi\b.*\bLucy\b #hi后面不远处跟着一个Lucy 0\d{2}-\d{8} #匹配012-12345678电话号码 元字符 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w

正则表达式学习笔记

/*新手的个人见解,勿以标准作量*/ ...待更新 米哥跟我说:"正则表达式说白了就是字符匹配." 以下是我学习当中的笔记. 正则表达式(Regular Expression)是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式. 在搜索文本时要匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.这就是正则的功能! 正则表达式由:定界符.原子.元字符.模式修改符组成. 定界符:一般用"//&q