java 正则

                                       

重复限定符:

                                       

                                      例如:匹配8位数字的QQ号码:^\d{8}$

分组 : 正则表达式中用小括号 () 来做分组,也就是括号中的内容作为一个整体。

如:匹配字符串中包含 0 到多个 ab 开头:^(ab)*

转义 :  要匹配以 (ab) 开头:^(\(ab\))*   

条件或 : 正则用符号 | 来表示或,也叫做分支条件,当满足正则里的分支条件的任何一种条件时,都会当成是匹配成功。

区间 : 

限定 0 到 9 可以写成 [0-9]       限定 A-Z 写成 [A-Z]            限定某些数字 [165]

                                                                         零宽断言: 

正向先行断言(正前瞻): 

语法:(?=pattern)

作用:匹配 pattern 表达式的前面内容,不返回本身。

正向后行断言(正后顾):

语法:(?<=pattern)

作用:匹配 pattern 表达式的后面的内容,不返回本身。

负向先行断言(负前瞻):

语法:(?!pattern)

作用:匹配非 pattern 表达式的前面内容,不返回本身。

负向后行断言(负后顾):

语法:(?<!pattern)

作用:匹配非 pattern 表达式的后面内容,不返回本身。

                                                                          捕获和非捕获

捕获组:匹配子表达式的内容,把匹配结果保存到内存中中数字编号或显示命名的组里,以深度优先进行编号,之后可以通过序号或名称来使用这些匹配结果。

数字编号捕获组:

语法:(exp)

解释:从表达式左侧开始,每出现一个左括号和它对应的右括号之间的内容为一个分组,在分组中,第 0 组为整个表达式,第一组开始为分组。

命名编号捕获组:

语法:(?<name>exp)

解释:分组的命名由表达式中的 name 指定

 非捕获组:

语法:(?:exp)

解释:和捕获组刚好相反,它用来标识那些不需要捕获的分组,说的通俗一点,就是你可以根据需要去保存你的分组。

                                                                           反向引用

根据捕获组的命名规则,反向引用可分为:

  • 数字编号组反向引用:\k 或\number

  • 命名编号组反向引用:\k 或者\'name'.

                                                                           贪婪和非贪婪

贪婪:

贪婪匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符,这匹配方式叫做贪婪匹配。

特性:一次性读入整个字符串进行匹配,每当不匹配就舍弃最右边一个字符,继续匹配,依次匹配和舍弃(这种匹配 - 舍弃的方式也叫做回溯),直到匹配成功或者把整个字符串舍弃完为止,因此它是一种最大化的数据返回,能多不会少。

懒惰(非贪婪):

懒惰匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能少的字符,这匹配方式叫做懒惰匹配。

特性:从左到右,从字符串的最左边开始匹配,每次试图不读入字符匹配,匹配成功,则完成匹配,否则读入一个字符再匹配,依此循环(读入字符、匹配)直到匹配成功或者把字符串的字符匹配完为止。

                    

反义:

                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值