正则表达式是什么?

个人感觉正则表达式是一种用于搜索文本各元素的符号组合。

正则表达式的用途

  • 查找
  • 替换
  • 验证
  • 提取

正则表达式语法

基本法则

/正则表达式/

/ 用来表示正则表达式的开始和结束
或运算符 |
转义字符 \

后缀搜索符号

+ 代表前面的字符必须至少出现一次
* 代表前面的字符可以不出现,也可以出现一次或者多次
? 代表前面的字符最多只可以出现一次

普通字符

元字符 描述
. 匹配除换行符外的任意单个字符
[] 可理解为一个字符集合,匹配方括号内的任意字符
[^ ] 否定的字符种类,匹配除了方括号里的任意字符
{} 通常作为量词使用,常用于限定一个或一组字符可以重复出现的次数
(xyz) 字符集,匹配与括号内相等的字符串
^ 从开始行开始匹配
$ 从末端开始匹配

简写字符

简写 描述
\w 匹配所有字母和数字,相当于[a-zA-Z0-9_]
\W 匹配所有非字母数字,相当于[^\w]
\d 匹配数字,相当于[0-9]
\D 匹配非数字,相当于[^\d]
\s 匹配空格字符
\S 匹配非空格字符
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\p 匹配CR/LF(相当于\r\n),用于匹配DOS行终止符

零宽度断言

符号 描述
?= 正先行断言
?! 负先行断言
?<= 正后发断言
?<! 负后发断言
说明:
正先行断言 (?=…): 匹配后面紧跟着某个模式的位置。
负先行断言 (?!…): 匹配后面不紧跟着某个模式的位置。
正后发断言 (?<=…): 匹配前面是某个模式的位置。
负后发断言 (?<!…): 匹配前面不是某个模式的位置。
这些是正则表达式中的环视或断言结构,用于匹配特定位置,不消耗字符。

模式修正符

标志 描述
g 全局搜索
i 忽略大小写
m 多行修饰符

贪婪匹配与惰性匹配

正则表达式默认采用贪婪匹配模式
使用?将贪婪匹配模式转化为惰性匹配模式