正则表达式整理【贪婪模式、非贪婪模式、独占模式】

一、正则表达式的基本作用

正则表达式可以用来做字符串的分割匹配替换、以及搜索截取这四部操作对与一般编程语言例如java也是可以去完成的,之所以用正则表达式,是因为它方便,如果大量的字符需要截取或者特定要求比较高的字符用java去截取将会带来很大的不便、而正则表达式只需要匹配截取就好了。

二、正则表达式的基本语法

  • \d 代表1个数字0-9
  • \D 代表1个非数字
  • \w 代表1个字符0-9 A-Z a-z
  • \W 代表1个非字符
  • . 代表任意1个非字符
  • \s 代表1个空格
  • \. 代表 .

() 字符串选择器(abc|cde|def) --这个位置必须是这三个中之一
[] 字符选择器
- | ,
[a-z] a到z的任意一个字符
[a|b|c] [abc] --abc三个中的一个字符
[a,b,c] 同上

{} 修饰符 通常修饰前面一个正则
\d{3,4} 最少三个数字,最多四个数字
\d{3} 必须是三位数字
\d{3,} 最少3个数字最多无所谓
\d{,3} 最多3位数字

+修饰符 通常修饰前面一个正则
\d+ 最少一个数字,最多无所谓

*修饰符 通常修饰前面一个正则
\d
最少0个数字 最多无所谓

?修饰符 通常修饰前面一个正则
\d? 最少0个数字 最多1个数字

?将正则匹配模式改为非贪婪模式

^非
[^a]在此处不允许是a这个字母

^ 匹配方向
从左向右匹配

$ 匹配方向
从右向左匹配

^()$ 边界界定图
完整匹配整个字符串

三、正则表达式非贪婪模式、贪婪模式、独占模式

非贪婪模式

解释:
贪婪模式一般是正则表达式默认的模式,意思是匹配符合条件的0个或者1个字符就不再继续往下匹配,正因为只匹配一个,形象的起名为非贪婪模式,应用符号为

例子:

成功案例:
正则表达式:
a\w?bc
匹配字符串:
abbc

失败案例:
正则表达式:
a\w?c
匹配字符串:
abbc

注释
通过上面的案例可以很明显的看见,非贪婪模式只匹配一个字符,及时后面有符合条件的也不行。如果想要可以,就要使用下面介绍的贪婪模式或者独占模式。

贪婪模式和独占模式

贪婪模式

解释:
贪婪模式是指在正则表达式中,匹配尽可能多的符合条件的字符,顾名思义尽可能的贪,由此起名贪婪模式,应用符号有{}

例子

正则表达式:
ab{1,}c      --表示最少有一个匹配,最多无所谓
匹配字符串:
abbbbc

注释:
正则表达式匹配尽可能多的b

独占模式

解释:
独占模式和贪婪模式基本上是意思一样的,但是也会又差别。
独占模式后面使用的是+

例子:

正则表达式:
ab{1,4}+c   --表示最少匹配一个字符,最多匹配4个字符,+号表示有多少匹配多少
匹配字符串:
abbbc

注释:
独占模式和贪婪模式的效果差不多,但是有区别,贪婪模式又字符回溯的功能。

回溯

解释:字符串再尽可能多的匹配的情况下,保证后面的匹配也可以尽可能的成功,就会对一匹配的字符进行回溯,给后面的匹配进行匹配。一般来说独占模式是没有回溯的,独占模式匹配到的字符串是不会进行回溯,如果后面的匹配需要用到,也不会进行回溯。
例子:

正则表达式:
ab{1,4}bbc
匹配字符串
abbbbc

注释:正则表达式匹配尽可能多的b,同时后面的bbc也需要匹配,这时前面的匹配已经匹配完了4个b,如果再匹配bbc就会匹配不上。再贪婪模式中,就会进行字符的回溯,放出两个b,让后面的bbc进行匹配。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值