php正则表达式
好久没写博客,最近过的太水,正好暑假报了暑假班学习了php基础,自我感觉效果还可以,但是正则表达式感觉没有掌握,水一篇加强一下记忆。
一 概念
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
二 作用
实际应用当中主要用于以下几个方面
- 注册页面判断用户输入的内容是否符合验证规则
- 从整体字符串中看是否包含指定的字符串
- 找到符合规则的字符串进行替换
三 语法规则
3.1 定义规则
$reg='/自己定义规则符号/';
3.2 符号简介
正则表达式手册:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
正则表达式可以有普通符号和元字符组成
普通字符:
概念: 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
也就是说普通字符只能够匹配字符串中与它们相同的字符。如:‘/a/’代表你就要匹配字符a
‘/a7/’代表你就要匹配字符a7
元子符:正则表达式中规定了一系列的特殊字符,这些字符不是按照字符的直接量进行匹配的,而是具有特殊的语义。如: ^ $ . * + ? = ! : | \ / ( ) [ ] { }
行定位符(^与$)
行定位符是用来描述字符串的边界。 “$”
表示行结尾 “^”
表示行开始如"^de"
,表示以de开头的字符串 "de$"
,表示以de结尾的字符串。
选择字符(|)
选择字符表示或的意思。如Aa|aA,表示Aa或者是aA的意思。注意使用”[]”与”|”的区别,在于”[]”只能匹配单个字符,而”|”可以匹配任意长度的字符串。在使用”[]”的时候,往往配合连接字符”-“一起使用,如[a-d],代表a或b或c或d。
排除字符
正则表达式提供了”^”来表示排除不符合的字符,^一般放在[]中。如[^1-5]该字符不是1~5之间的数字。
限定符
点号操作符
匹配任意一个字符(不包含换行符)
转义字符()
表达式中的反斜杠有多重意义,如转义、指定预定义的字符集、定义断言、显示不打印的字符。
转义字符主要是将一些特殊字符转为普通字符。而这些常用特殊字符有”.”,”?”、”\”等。
预定义的字符集
括号字符()
在正则表达式中小括号的作用主要有:
- 改变限定符如(|、* 、^)的作用范围 如(my|your)baby,如果没有”()”,|将匹配的是要么是my,要么是yourbaby,有了小括号,匹配的就是mybaby或yourbaby。
- 进行分组,便于反向引用
3.3正则匹配的方法
preg_match($reg,$str,[$arr]);
$reg是自己定义的正则表达式
$str是自己要查询的字符串
$arr是匹配到的结果
3.3.1preg_match()用法详解
preg_match()只要找到一次符合正则表达式的结果就终止了,不会再往下匹配
preg_match_all()是匹配一次成功以后不会终止,会一直匹配到完
四 高级应用
4.1贪婪模式
正则表达式里会尽可能多的匹配的元素
4.2禁止贪婪模式
4.3反向引用
在匹配到某个字符串之后,后续还需要使用该字符串。这就是反向引用。
捕获:将需要的字符串保存起来,便于后续引用,可以理解为保存到内存中,同时对它进行一个编号,使用小括号即可。它会从1开始编号,依次是2,3,4..。
2、引用:只需要使用 \编号 即可, \1 \2 \3 (第一个”"表示转义)
括号编号的顺序不一定是书写的顺序,应该是执行的顺序。如果括号是平行,从左到右,如果括号是包含关系,先内后外。
五 总结
自我感觉过了一遍基本没什么效果,接触正则太少,还是需要多写多练,在菜鸟的路上越走越远。