正则表达式

正则基础

^

表示一行的开始

$

表示一行的结束

[…]

表示其中的字符是选择性(逻辑或)的,要么是a,要么是b,要么是…。

c[a|b]t 可以匹配到cat、cbt
[a-z]、[0-9]、[0-9A-Za-z]是支持的。
[^$] 匹配空行
像 . * + ? 这些词在[]中仅表示字面的意思,利用这一特性,如果想表示原本含义,例如要匹配 . ,可以写为[.]

[^…]

表示匹配不是其中的字符。为上一条的取反

-

连字符,表示一个范围,见上一条。

如果要匹配 - ,请将 - 写在开始位置,如果[-a-z],匹配-或者是小写字母。

.

表示任意字符(除了换行符),

|

表示或者

(cat|dog) 表示要么cat,要么dog,
注意:这和[…]不同的是,[…]匹配其中的单个字符,(..|…)可以匹配不同的字符组。

?

表示可选项,类似于单选框,匹配零个或一个。

+

表示出现一次或多次。

*

表示匹配零次或多次。

{min,max}

表示匹配之前的子表达式重复min到max次。(闭区间)

{count} 表示匹配count次。

括号与反向引用

([0-9]){2,3}add\1 \1表示第一个括号中的内容再次使用。

转义字符

像 . * + ? 这些词在正则中有特殊的含义,要想使用它原本的含义,使用\来进行转义。

(…)

括号的作用:1.限制多选结构,2.分组,3.捕获文本。

一些特殊的字符
  • \t 制表符
  • \n换行符
  • \r 回车符
  • \s 任何空白字符(例如空格符、制表符、换行符等)
  • \S 除\s之外的任何字符(所以用(\s|\S) * )来表示任意字符。
  • \w 相当于[a-zA-Z0-9] 所以经常用\w+来表示一个单词
  • \W \w取反,也就是[^a-zA-Z0-9]
  • \d 相当于[0-9] 也就是数字
  • \D \d取反,也就是[^0-9]