20200311 正则表达式的学习-图解哦

1. . 匹配

除了 \n 都可以进行匹配
在sublime自己去感受感受,ctrl+f ;设置正则匹配
在这里插入图片描述
一直敲回车键就可以查看到匹配的过程。

2.[]的使用

-----借助b站的呜呜记忆(心房)=匹配的内容出现在[]里面就成功,匹配 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 其中一个即可
在这里插入图片描述

3.[^]

-----借助呜呜记忆:通过进入超市的办法进入心房。所以都不需要,eg:不是a-Z的都能匹配(\b是无法匹配的,虽然也不在a-Z中),回车符号可以匹配,空格
在这里插入图片描述

4.\w

匹配 能作为变量的字符(数字,字母,下划线)(word),因为中文也能当变量,所以也能匹配到—只能这么记忆咯

 js console中  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200316172750711.png)

在这里插入图片描述

5. \W

不能构成变量名的字符
在此补充一下

 https://www.cnblogs.com/liluxiang/p/9474913.html 
 
\r是回车,英文是Carriage return,作用:使光标到行首
\n是换行,英文是New line/line feed,作用:使光标下移一行
如果用过机械打字机,就知道回车和换行的区别了。
回车就是把水平位置复位,不卷动滚筒。
换行就是把滚筒卷一格,不改变水平位置。
我们平时所说的键盘Enter键换行实则应该叫做叫做回车换行(\r\n)

看到一种说法: 
windows下enter是 \r\n; 
linux/unix下是\n; 
mac下是\r
Windows 采用 \r\n 是有原因的,Windows 采用了传统的英文打字机的模式。
想想看英文打字机是如何换行的呢?英文打字机是选择将小车退回至起点,
这个过程称为回车(carriage return, CR),随后把小车调至下一行的位
置,这个过程称为换行(line feed, LF),这样就完成了英文打字机中换
行过程。

回车(CR)在计算机中使用 ASCII 为 13 的字符来表示(0x0D),换行		(LF)使用 
ASCII 为 10 的字符来表示(0x0A)。

注意:
1、windows下可直接使用\n来匹配换行符,但仍然推荐使用标准的\r\n来匹配键盘Enter键的换行符;

2、使用\r\n组合是有顺序的,调转顺序写成\n\r是错误的,将无法匹配换行符!

回车符号(\r\n ),空格,tab,.{[(|*+ \t(tab) \f换页符 等
其实 [ \r \n \t \f ] ==== \s
\s是无法当成变量的在这里插入图片描述

6.\s

\t \f \n \r 第5点已经说明白了,由于在sublime无法 换页符号
\r 这两种。
此时的\s展现的就是\r\n的内容在这里插入图片描述

7.\S

不是 \s的内容都可以匹配,当然 间隔符无法展现
在这里插入图片描述

8.\d 数字

            data
在这里插入图片描述

9.\D

不是数字咯 等价于[^0-9] 还是无法匹配到 间隔符
在这里插入图片描述

10.*

呜呜记忆法 0次或多次
在这里插入图片描述

11.+

呜呜记忆法 1次或多次

12.?

呜呜记忆法 不是0就是1咯

13 {m,n} 重复m,n次。

当然n可以不指定,就是大于等于m次
连续出现4次以上的 数字 被匹配
在这里插入图片描述

14 懒惰匹配 4种情况

    * ?        匹配0次及以上,因为是懒惰匹配,所以匹配到0次就放行
    +?          匹配1次及以上,因为是懒惰匹配,所以匹配到一次就放行
    ??         匹配0次或者一次,因为是懒惰匹配,所以匹配0次就放行
    {m,n}?   匹配m到n次,懒惰匹配,所以匹配m次 
14-1:*? 匹配0次以上

首先不使用懒惰匹配,所以他会尽可能的匹配多一点。

在这里插入图片描述
使用懒惰匹配(也就是在后面加上?)
在这里插入图片描述

14-2 +? 匹配1次及以上(懒惰匹配哦)

还是老样子,不加?进行匹配
在这里插入图片描述

加上?进行匹配
在这里插入图片描述
我就懒一点,匹配到一个数字就返回,然后重新开始匹配

14-3 ?? 匹配0或者1次
不加?,就会匹配一次
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031619584189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjA2MDcx,size_16,color_FFFFFF,t_70)

加了?-------懒惰,匹配到一个3我就不匹配了
在这里插入图片描述

14-4:{m,n}?
   不是懒惰匹配,不加?
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200316200608863.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjA2MDcx,size_16,color_FFFFFF,t_70)

懒惰匹配{m,n}?
在这里插入图片描述

15. ^ 行首

每行的行首都会进行匹配
在这里插入图片描述

16 $ 行尾

在这里插入图片描述

17.\A 字符串开头

在sublime中,一个文件的开头
在这里插入图片描述

18 \Z 字符串尾巴

在sublime中,一个文件的结尾 在这里插入图片描述
如果想要匹配 \Aabcdefg\Z
则新构建一个文件,只有abcdefg才能匹配
在这里插入图片描述

19 \b 单词边界

由于subline,无法显示匹配结果,于是手动的添加了边界
在这里插入图片描述
那我是怎么知道就是这些地方匹配到了呢?
在这里插入图片描述
点击其他的地方:
在这里插入图片描述

20 \B 不是词头,

词尾就能匹配(也是一个边界)

不是\b的就是咯(\n\t 也会匹配到)
验证\B能匹配制表符
首先匹配 \t能匹配到第5行的两个制表符
在这里插入图片描述
然后匹配\B
在这里插入图片描述
也能说的通,空格 ,制表符 ,换行符都不是 单词的词头词尾。所以能匹配到

21 ()

有向后引用的作用,后面使用前面的内容
为什么要有这个语法呢?
匹配日期吧?
在这里插入图片描述
使用这个也能匹配成功,但是也会匹配到这些不合规则的日期
在这里插入图片描述
所以使用向后引用,让后面的与前面显示内容一样
在这里插入图片描述
另外两个不合规则的日期就会过滤掉

22 \1,\2

23 设定规则

在这里插入图片描述
乍一看,看不懂,说的什么东西,不过从博客中看到了一句话
以 (?) 开头的组是纯的非捕获 组,它不捕获文本 ,也不针对组合计进行计数。就是说,

 如果小括号中以?号开头,那么这个分组就不会捕获文本,
 当然也不会有组的编号,因此 也不存在向后 引用。
23.1 : (?=X) 人话解释一下
(?=x)必须放在右边,进行判断左边是否合规则
eg:
	匹配w,但是w的右边一定是55  
	w+(?=55)

在这里插入图片描述

23.2 : (?!X)

这个也是放在右边来判断左边匹配的内容是否符合右边的规则呢?

我想匹配w,但是 w 的右边不是1024

在这里插入图片描述

23.3

通过在匹配的内容的右边设定规则,过滤已经匹配到的。当然我们也可以在匹配的内容的左边设定规则,判断匹配的内容是否符合左边的规则
使用
(?<=X)

eg:  匹配  99,但是99的左边一定是23

在这里插入图片描述

23.4 : (?<!X)
 匹配 99,但是99的左侧不是23

在这里插入图片描述

23总一下
 我想规定一下我匹配的内容,我匹配的内容左边要满足什么条件
 或者右边需要满足什么条件。这样我匹配的内容才是正确的,否则失败
 	1。规定右边需要满足什么条件
 	          已经匹配的内容(?=X)
 	     如果右边是X,则匹配的内容成功
 	          已经匹配的内容(?!X)
 	     如果右边不是X,则匹配的内容成功
 	2.规定左边需要满足什么条件
 	         (?<=X) 已经匹配的内容
 	      如果左侧是X,则已经匹配的内容成功
 	      	(?<!)X已经匹配的内容
 	      如果左侧不是X,则已经匹配的内容成功
   符号记忆:
   		*一般都是从左往右进行匹配,所以一般会先匹配到左边的内容
   			所以我们通过这两个 规定 已经匹配的内容(左边) 是否符合规则
   			 (?      =X)     (?       !X)   
   		*开发员又想规定  右边的内容是否合法,所以只能在左侧定义规则
   		   为了区分  使用<   代表左侧
   		     (? <   =X)    (?   <   !X)  ,将<往上面插入就可以了。	 

上面的内容是通过这张图展现出来的。
在这里插入图片描述

eg:
最后一个字符是,的情况
在这里插入图片描述
或者 ,$
在这里插入图片描述

https://blog.csdn.net/chenlei0630/article/details/19036819

区别 \A \Z 和 ^ $的请借鉴:
https://zhidao.baidu.com/question/1386685065581558500.html

先使用这个视频,简单的记忆一下。挺不错的哦----呜呜记忆法
https://www.bilibili.com/video/av82911240?from=search&seid=6436916534512915174

然后看看老外的视频教程
https://www.bilibili.com/video/av66949177?t=2266
使用sublime也可实现这样的效果。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值