学习正则(第一天)字符匹配
Dear,大家好,我是“前端小鑫同学”,?长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
01. 可以干什么?
- 匹配模式
- 匹配字符
- 匹配位置02. 模糊匹配-横向匹配 待匹配的字符长度不固定,关联概念为量词({m,n}),表示某个字符重复出现m~n次后被命中。
正则:/hel{1,2}o/gm
说明:待匹配的字符串内容命中规则为he
和o
中间包含最少1个l
和做多2两个l
。
匹配正例:helo
hello
匹配反例:heo``helllo
03. 模糊匹配-纵向匹配
待匹配的位字符串内容不固定,关联概念为字符组([abc]),表示某个位置出现的字符为给定返回中的一个后被命中。
正则:/ab[0-9]cd/gm
说明:待匹配的字符串内容命中规则为ab
和cd
中间包含一个数字。
匹配正例:ab1cd
匹配反例:abbcd
ab12cd
04. 认识字符组
我们需要命中的字符在一个范围内的表示方法是:
- 指定几个,如:[abc]。
- 指定范围,如:[0-9],[a-z],[A-Z]。
- 包含特殊符号,如:[-ab],[ab-],[A-Z],均表示需要命中的内容为两个字符和
-
其中一个即可。
我们需要命中的字符不在这个范围内的表示方法是(使用^
脱字符标记):
- 非指定几个,如:[^abc]。
- 非指定范围,如:[^0-9],[^a-z],[^A-Z]。
字符组简写表:
简写 | 范围表示 | 说明 |
---|---|---|
\d | [0-9] | 匹配数字 |
\D | [^0-9] | 匹配非数字 |
\w | [0-9a-zA-Z_] | 匹配单词字符 |
\W | [^0-9a-zA-Z_] | 匹配非单词字符 |
\s | [ \t\v\n\r\f] | 匹配空白符,空格,水平/垂直制表符,回车,换行,换页 |
\S | [^ \t\v\n\r\f] | 匹配非空白符 |
. | [^\n\r\u2028\u2029] | 匹配非回车,换行,行分隔符,段落分隔符 |
仔细看一下这几个单词,你一定能一次性全记住。我们通常会使用[\w\W]
来表示任意字符,当然[\d\D],[\s\S],[^]也都可以,有的情况可以用.
来充当任意字符?。
05. 认识量词
量词决定了我们字符要被命中的次数。
量词(贪婪) | 表示 | 量词(惰性) |
---|---|---|
{m,n} | 表示最少命中m次,最多命中n次。 | {m,n}? |
{m,} | 表示最少命中m次。 | {m,}? |
{m} | 表示命中次数为m次。 | {m}? |
? | 表示命中一次或者不命中。 | ?? |
+ | 表示至少命中1次。 | +? |
* | 表示命中任意次数,可以不命中。 | *? |
贪婪模式:越多越好,多多益善。
惰性模式:够用就好,知足常乐。
上表中的图示:
06. 认识管道符|
:
命中给的的模式中的一种即可,需要注意的是正则中的管道符也为惰性匹配,够用就好。
可以看到,似乎最符合的是右边的helloworld
,但是优先命中左边的hello
后就停止了,那我们想要匹配到最想要的那个怎么办呢,看下图后先思考一下?。
字符匹配我们就先学到这,赶紧抄起以前代码中的正则用下面的工具试试看吧,XDM?。
相关文章
- Java IO 学习笔记一:为什么带 Buffer 的比不带 Buffer 的快
- Java学习笔记 jar包获取当前路径
- Java学习笔记 线程池使用及详解
- Java开发中常用jar包整理及使用
- Java 读取excel表格文件
- Java 多线程(六):容器
- JavaSE实现IoC
- stars-one的原创工具——星之小说下载器(JavaFx应用 )
- Java SE 7 新增特性
- 常见算法合集[java源码+持续更新中...]
- 分布式事务(二)Java事务API(JTA)规范
- 北漂不易,逆风前行[给想在北京工作的java同学们诚恳的建议!]
- Java工程师的生活、读书、技术栈
- 十大基础排序算法[java源码+动静双图解析+性能分析]
- 分享两个免费下载Windows系统镜像
- CSRF-跨站请求伪造-相关知识
- 在VMware上安装Metasploitable2
- SSRF-服务器端请求伪造-相关知识
- RCE-远程命令执行和代码执行漏洞-知识
- 文件包含漏洞-知识点