正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
一、 什么是正则表达式
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
这就是正则表达式? 看不懂
二、 和正则表达式相似的事物
乱/看不懂/神秘
女人的心
道士的符
医生的处方
正则表达式
三、 什么时候用正则表达式
当字符串函数已经不能胜任某个功能的时候 用正则表达式来搞定,
其作用就是用来对字符串进行匹配查找,替换以及分割等操作
四、 学习正则表达式可以做什么
1. 操作字符串是正则的唯一作用
2. 验证用户名 密码 是否符合规范
3. 验证电话号
4. qq聊天表情
5. 新闻采集器/小偷程序
五、 正则表达式的几个特点
正则表达式也是一个字符串
由于是有特殊的意义的字符串组成,具有一定编写规则,也是一种模式所以我们可以看成为一种语言
注意: 如果正则表达式不和函数一起使用则他就是普通字符串 如果将正则表达式放入函数中使用 才能发挥出表达式的作用
preg_match() 进行一次正则表达式匹配(重点重点重点)
参数:
第一个参数: 正则表达式
第二个参数: 要匹配的变量
第三个参数: 匹配出来的数组
返回值:
返回匹配的个数
六、 学习流程
1. 语法学习
就是一个字符串
2. 函数学习
查找替换匹配等
以上学习内容缺一不可
七、 正则表达式的语法
i. 正则定界符
ii. 正则表达式中的原子
iii. 正则表达式的元字符(原子修饰符)
iv. 正则表达式模式修饰符
八、 定界符(重点重点)
是用来声明正则表达式的边界符号
实际上 数字 字母 \ 之外的都可以
如果你要将$作为定界符的情况下 外面必须使用单引号作为字符串的定界符 不能是双引号 因为双引号解析变量
通常用 ‘/’ 作为定界符 推荐使用!
注意:
正则表达式有两个定界符
一个是字符串的引号的边界符
一个是正则表达式的定界符
九、 原子符(重点重点重点重点重点)
i. 与化学里面的一样 最小单位原子
正则表达式中也是也一样 原子是组成正则表达式的最小单位
原子到底有哪些
所有的可见字符都是原子
大部分的不可见字符串也是原子 比如 空格 转义字符
1. 普通字符
字母 数字 下划线
2. 特殊字符
[email protected]#$%^&*(){}|:”<>?
3. 非打印字符
\f --- 分页符
\n --- 换行符
\r --- 回车符
\t -- 制表符
\v -- 垂直制表符
\d 匹配所有数字
\D匹配非数字
\s 匹配所有空白字符 包括 \r \n \t \v 等
\S匹配非空白字符
\w 匹配字母数字下划线
\W匹配非字母数字下划线
.匹配所有内容 但是除了\n以外
\V 匹配转义字符 (\V是用来匹配转义字符 但是他不只是只能匹配到\)
十、 正则表达式的元字符(原子修饰符)
a) 原子列表(重点重点)
[abc] 可选列表 只能是原子列表中的一个字符
[4-6] 连续的列表 456 可以匹配
[^abc] 排除列表 除了 a,b,c 都可以
b) 原子修饰符(重点重点重点重点)
+ 表示一个或者多个
?表示零个或者一个
*表示零个到N个
{}
{m,n}
表示 m到n个
{m,}
表示m个以上
{m}
表示m个
十一、 词边界修饰符(掌握)
什么是词边界
可以分割单词的都是 非字母数字下划线
\b 词边界
\B 非词边界
注意: 词边界只对英文有效
十二、 字符串边界(重点)
1. ^ 以指定字符开头的
2. $ 以指定字符结尾的
3. ^ 字符串$ 精确匹配字符串
十三、 选择修饰符(掌握)
| 逻辑或
a|b 匹配a或者匹配b
abc|def 匹配 abc或者 def 字符串的结合优先级高于选择
ab(c|d)ef 匹配 abcef 或者 abdef
十四、 模式单元
()
改变优先级
将多个原子视为一个原子
可以将括号里面的内容在函数的辅助下反向引用
反向引用是目标字符串中有重复内容的时候可以这样使用 但是如果只是模式一样 那样不行
反向引用 必须是值相同 模式也一样
第几个括号 后面就用\几来替代
十五、 模式修正符(重点)
所有的模式修正符 都写在结束定界符外面
1. i 忽略大小写
2. x 忽略正则表达式空白
3. s 视为一行 .可以匹配\n
4. m 视为多行 .不可以匹配\n
5. U 改变贪婪模式
.* 默认贪婪模式 匹配最长的内容
.*?默认非贪婪模式 匹配最短的内容
贪婪变为不贪婪 不贪婪 变为贪婪
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章