正则表达式简单介绍
来源:互联网 发布:易烊千玺舞蹈知乎 编辑:程序博客网 时间:2024/06/14 09:05
正则表达式是对字符串操作的一种逻辑公式,用事先规定好的一些特殊字符,以及这些字符的组合,组成一个“规则字符串”。这个“规则字符串”用来表达对字符串的一种过滤逻辑。通常被用来索引、替换、校验的操作。
一,正则表达式-元字符
正则表达式用事先规定好的一些特殊字符,以及这些字符的组合来表达字符串的一种过滤逻辑。前提咱就得先熟悉这些特殊字符(元字符)。
二,正则表达式-运算符优先级
正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。相同优先级的从左到右进行运算,不同优先级的运算先高后低。
三,正则表达式-分组捕获
捕获的前提是分组,正则表达式中,通过小括号来分组,小括号里面包裹的指定表达式(子串)也叫分组。捕获有两种情况:捕获组、非捕获组。
捕获组:捕获组通过从左到到右的开括号来编号。0下标始终代表整个表达式,可以认为最外层也有一层小括号,只是被隐藏了。
例如正则表达式 :(A)(B(C)) 匹配出来的捕获组有四个组:0->(A(B(C))) 、1->(A)、2->(B(C))、3->(C)。
源字符串:http://www.runoob.com:80/html/html-tutorial.html 正则表达式:(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)。匹配到的结果有五个分组:0(http://www.runoob.com:80/html/html-tutorial.html)、1(http)、2(www.runoob.com)、3(:80)、4(/html/html-tutorial.html)
非捕获组:以 (?) 开头的组是纯的非捕获 组,它不捕获文本 ,也不针对组合计进行计数。就是说,如果小括号中以?号开头,那么这个分组就不会捕获文本,当然也不会有组的编号。
四,正则表达式-反向引用
捕获组在匹配成功时会将子表达式匹配到的内容,保存到内存中一个以数字编号的组里,可以简单的认为是对一个局部变量进行了赋值,这时就可以通过反向引用方式,引用这个局部变量的值,不仅可以在正则表达式外部通过程序进行引用,也可以用在正则表达式内部进行引用。这种引用就是反向引用。反向引用一定要和捕获组一起使用,用 \num的方式引用, num是十进制的数字对应捕获组里面的下标。
实例一要求:查找文本中两个相同的相邻单词
正则表达式 : \b([a-z]+)\b \b\1\b
解释:\b([a-z]+)\b 表示单词
结果:源字符串 Is is the cost of of gasoline going 匹配到一个结果of of一个更加复杂例子分析: 源字符串:aaa bbbb ffffff 999999999 正则表达式:(\w)((?=\1\1\1)(\1))+
匹配结果三个:bb ffff 9999999
解释:(\w)((?=\1\1\1)(\1))+ 先取出一个字符,判断后面是不是有三个相同的字符,有就取出一个,然后再判断后面是不是有三个相同的字符,有就取出一个。一直这么下去。得到最终结果。
五,正则表达式-预查
预查:预先判断是否是某个值。分两种情况:正向预查->预先判断是否有某个值、反向预查->预先判断没有某个值。
标题 正则 实例 正向(肯定)预查(在需要匹配的字符串后面匹配parttem) (?=pattem) ff(?=ab) 匹配ff,要求ff的后面必须是ab。ffab可以匹配到 反向(否定)预查(在需要匹配的字符串后面不匹配parttem) (?!pattem) ff(?!ab) 匹配ff,要求ff的后面不能是ab。ffa可以匹配到实例要求:abcd四个字母连接,每个字母有且仅出现一次,并且顺序可以不固定(abdc,abcd,bcad等等情况)
正则表达式:([abcd])(?!\1)([abcd])(?!\1|\2)([abcd])(?!\1|\2|\3)([abcd])
六,正则表达式-贪婪、非贪婪
贪婪模式:尽可能多的匹配(属于贪婪模式的元字符{n,m}、{n,}、、+、?)。非贪婪:尽可能少的匹配(贪婪模式元字符后面加? {n,m}?、{n,}?、?、+?、??)。
源字符串:testabactestmmanantest
贪婪模式正则:test.*test 结果:testabactestmmanantest
贪婪模式正则:test.*?test 结果:testabactest
七,正则表达式-实例汇总
要求 正则表达式 数字 ^[0-9]*$ 正整数 ^[1-9][0-9]{0,}$ 整数 ^-{0,1}[0-9]{1,}$ 浮点数 ^[-]?[0-9]+.?[0-9]+$ 汉字 ^[\u4e00-\u9fa5]{0,}$ 由字母、数字、下划线组成的字符串 ^[a-zA-Z0-9_]{1,}$ Email地址 ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$ 日期格式 ^\d{4}-\d{1,2}-\d{1,2}
备注:实例会持续收集
- 正则表达式简单介绍。
- 正则表达式简单介绍
- 正则表达式的简单介绍
- java正则表达式简单介绍
- Java正则表达式简单介绍
- 正则表达式的简单介绍
- 正则表达式的简单介绍
- 正则表达式的简单介绍
- 【正则表达式】简单入门介绍
- oracle的正则表达式简单介绍
- 【转】boost正则表达式库简单介绍
- 简单介绍一下C#正则表达式
- 常用的正则表达式简单介绍
- 各种流派的正则表达式简单介绍
- iOS 正则表达式的简单使用介绍
- 正则表达式之元字符简单介绍
- oracle的正则表达式(regular expression)简单介绍
- oracle的正则表达式(regular expression)简单介绍
- 用Delphi修改系统环境变量
- 最简单的登陆界面jsp+servlet
- 会话跟踪常用的4种方法
- 大四的9月
- 说说JSON和JSONP,也许你会豁然开朗
- 正则表达式简单介绍
- Ubuntu删除repository ppa
- 使用eclipse 制作javadoc 文档
- 个人笔记6
- CentOS安装微软雅黑,解决drawImage中文乱码问题
- Gym
- @RequestMapping注解的用法
- Spring cloud + Swarm mode 实战二:部署微服务
- EmptyRecyclerView 数据为空时显示指定view