正则表达式简单总结
来源:互联网 发布:php视频采集 编辑:程序博客网 时间:2024/06/16 00:50
PHP中的正则表达式分为三部分:分隔符,表达式,修饰符
分隔符:除了字母、数字、反斜线和空白字符以外的任意字符,经常使用的分隔符是斜线(/)、hash符号(#)、取反符号(~)
表达式:由一些特殊字符和非特殊的字符串组成
修饰符:用于开启或关闭某种功能
元字符
“.”匹配除换行符以外的任意字符
“\b”代表单词的开头或结尾
“\w”匹配字母、数字、下划线或汉字
“\s”匹配任意空白符
“\d”匹配任意数字
“^”匹配字符串的开始
“$”匹配字符串的结束
“-“表述范围
“[]”匹配括号中的任意一个字符
*(任意次)、?(0或1次)、+(至少一次)表示要匹配的数量
使用反斜线来转义,也可以使用\Q、\E来忽略元字符
<?php$a = "12332+";preg_match_all('/[\d+]/',$a,$arr);print_r($arr);//Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 3 [4] => 2 [5] => + ) )
反义
“\B” 匹配不是单词的开头或结尾
“\W”匹配不是字母、数字、下划线或汉字
“\S”匹配任意不是空白符的字符
“\D”匹配任意非数字字符
“[^x]”匹配除了x的任意字符
“[^xyz]”匹配除了xyz的任意字符
分支
(c|h|f|to)at
分支用”|”分隔开
\d{5}-\d{4}|\d{5} 如果满足某个分支条件,就不考虑其他条件了
分组
重复单个字符可以在字符后加上限定符,当多个字符重复时可以用小括号指定子表达式,然后规定子表达式重复的次数
捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里
(?:exp) 匹配exp,不捕获匹配文本
ip的正则表达式
(((25[0-5]|2[0-4]\d|1\d{2})|[1-9]\d|\d)\.){3}((25[0-5]|2[0-4]\d|1\d{2})|[1-9]\d|\d)
反向引用
反向引用用于重复搜索前面某个分组匹配的文本
(\”|’).*?(\”|’)可能会出现匹配到的内容单引号或双引号无法成对出现
(\”|’).*?\1
环视
断言用来表明一个应该为真的事实。
正则表达式中,只有断言为真才会继续进行匹配。
断言用来匹配一个事实而不是内容
零宽断言
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面不是exp的位置
(?< !exp)匹配前面不是exp的位置
(?#comment)注释,不对正则表达式产生任何影响
$b = '1334 2332 3675 4445 5678';preg_match_all('#(?<=\s)\d+(?=\s)#',$b,$arr);print_r($arr);//Array ( [0] => Array ( [0] => 2332 [1] => 3675 [2] => 4445 ) )
$b = 'rest model result ';preg_match_all('#(?!r)\w+(?<!t)#',$b,$arr);print_r($arr);//Array ( [0] => Array ( [0] => es [1] => model [2] => esul ) )
贪婪/懒惰模式
*?、+?、 ??、 [n,m]?、 [n,]?,加”?”关闭贪婪模式
运算符优先级
优先级从上到下,由高到低
\ 转义
(),(?:),(?=),[] 括号和中括号
*,+,?,{n},{n,},{n,m} 限定符
^,$ 定位符
| 替换
常用模式
1.忽略大小写(i)
2.多行模式(m)
如果使用这个模式^和$就是行的开始和结束处,否则将整个输入视作一个字符串,忽略换行符
m代表多行匹配,而非跨行匹配。当表达式中出现^、$中至少一个元字符且字符串有换行符”\n”时,m修饰符才起作用,负责被忽略。
3.点号通配模式(s)
使点号可以匹配换行符
4.懒惰模式(U)
5.结尾限制(D)
如果使用$限制结尾字符,则不允许出现结尾有换行
- 正则表达式简单总结
- JAVA正则表达式简单总结
- C#正则表达式简单总结
- 正则表达式简单语法总结
- 正则表达式简单语法使用总结一
- 正则表达式简单语法使用总结二
- 有关正则表达式的一些简单总结
- 正则表达式简单示例
- 正则表达式简单应用
- 正则表达式(简单 常用)
- 正则表达式原来如此简单
- 简单js正则表达式
- 正则表达式简单实例
- 简单正则表达式
- 简单正则表达式匹配
- 正则表达式简单介绍。
- 简单正则表达式
- 正则表达式 简单笔记
- 【二分答案】SDUT 3916 上色的纱雾
- 随笔-iOS学习简单绘图
- 【Android Studio】 AS 使用记录03(AS 常用插件)
- SQL代理服务预警
- Eclipse + Pydev开发Python时import报错
- 正则表达式简单总结
- spark 集群安装
- 解决通达OA中Redis缓存服务和MQ队列服务起不来的问题
- @Controller和@RestController的区别?
- mybatis-全局配置文件-mybatis-config.xml-databaseIdProvider-9
- java中字节流与字符流的区别
- Codeforces 813B The Golden Age 题解
- AngularJs基础
- Xcode 8 真机调试 iOS 11 beta