正则表达式(缩写为regex或regexp;有时称为理性表达式)是指定文本中搜索模式的字符序列。
通常这种模式被字符串搜索算法用于对字符串进行“查找”或“查找并替换”操作,或用于输入验证。
正则表达式技术在理论计算机科学和形式语言理论中得到发展。
正则表达式的概念始于20世纪50年代,当时美国数学家斯蒂芬·科尔·克林(Stephen Cole Kleene)将正则语言的概念形式化。它们在Unix文本处理工具中普遍使用。自20世纪80年代以来,编写正则表达式的不同语法已经存在,一个是POSIX标准,另一个被广泛使用的是Perl语法。
正则表达式用于搜索引擎、字处理器和文本编辑器的搜索和替换对话框、文本处理工具(如sed和AWK)以及词汇分析。
匹配一个或多个字符
使用:+
区别“+”加号位置
- “+”在中括号外面,例如[0-9]+
- “+”在中括号里面,例如[0-9+],表示匹配数字和加号
匹配0个或多个字符
使用:*
匹配0个或1个字符
使用:?
匹配n次
{n}
至少匹配n次
{n,}
至少匹配n到m次
{n,m}
正则表达式——贪婪&非贪婪
贪婪:
*
+
{n,}
非贪婪:
*?
+?
{n,}?
例如:
(贪婪)
(非贪婪)
边界
单词边界
使用:\b
不实用单词边界,在找某个单词时,会同时匹配其他单词的一部分
使用单词边界\b后
字符定位符
使用:^ $
例如,+为1个或多个,匹配开头为至少一个数字的一部分
捕获分组
使用:圆括号 ()
“或”使用:
回溯引用
使用:\1
前后查找字符
向前查找:?=
向后查找:?<=
?! 查找后面不是 XX 的 字符
?<! 查找前面不是 XX 的 字符