定义:是用来描述字符序列的方法,是一种极其强大的计算工具
用途:用于检索和替换符合某个模式的文本,是一种极其强大的字符串操作 工具
方法:利用已经定义好的特定字符,以及这些特定字符的组合,来行成一个“规则字符串”,利用这个字符串表达对于文本信息的过滤逻辑。
正则表达式中对于元字符的记忆和使用极其关键
下面列举几种重要的元字符和记忆规则
1.”\b” 表示单词的开头或者结尾,如果渴望匹配单词的时候需要使用
2.”.” 表示匹配除了换行符以外的任意字符
3.”*” 表示它前面的字符可以重复使用任意次以使得整个表达式得到匹配
4.”\d” 用来匹配一个数字
5.”\s” 用于匹配任意空白字符,例如空格,制表符等
6.”\w” 用于匹配任意字母、数字、下划线、汉字
7.”+” 和*的作用比较类似,只是+需要匹配一次以上(ps:常常用于不包含)
8.”^” 匹配字符串的开始,单词和字符串的区别
9.”$” 匹配字符串的结束
10.{n,m} 匹配长度 ,重复次数大于n次,小于m次
11.”\” 用于转义,将一些特殊字符转义为正常的字符
12.”?” 和*类似,表示用于重复0或者1次
13.”[] ” 表示包含,将需要匹配的内容放到[]中去
14.””
15.”“
基本语法规则
“^([]{})([]{})([]{})$”
正则字符串 = “开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束”
分割语法
[a,b,c,d] //包含a或者b或者c或者d
PS:先学会用基础再去等价的进行替换
分支条件语法
使用”|” 来合并几种包含条件,只要满足其中一种就匹配,注意各种包含条件之间需要独立,否则有的条件可能会被屏蔽。
分组语法
利用“()”来表示不同的分组,利用不同的分组可以实现的功能也有所不同,由于正则表达式中并没有给定算术运算,因此可以通过分组来实现很多算术操作的功能
常见的分组语法如下:
1.捕获
1.(exp) 捕获exp的文本内容
2.(?<name>exp) 来为分组命名
3.(?:exp) 不捕获分组结果,也不为此分组进行命名
4.(?#comment) 不对分组产生任何的影响,只是用来进行注释的
2.零宽断言
1.(?=exp)匹配exp前面的位置,即exp之前的位置是我们想要的
2.(?’<’exp)匹配exp后面的位置,即exp之后的位置是我们想要的
3.负向零宽断言
这样做的目的还是没有太明白。
3.(?!exp)匹配后面跟的不是exp的位置,只要后面跟的不是exp都会被查找出来
4.(?
\k<word>
贪婪和懒惰
1.正常情况下,使用重复接受的限定符的时候,默认为贪婪匹配
2.如果在限定符后面加上?则修改为懒惰匹配,懒惰匹配为尽可能最少的使用重复接受限定符