正则表达式

什么是正则表达式?

  正则表达式是一组由字母和符号组成的特殊文本,可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等。

    此正则表达式,可以匹配到 "2222-8_3" 但是匹配不到 "99*"

  • 基本匹配

    正则表达式是执行搜索时的格式,它由一些字母和数字组合而成。如正则表达式“123”匹配字符串“123”,它逐个字符与输入的正则正则表达式做比较。正则表达式对大小写敏感,所以“The”不会匹配“the”;

  • 元字符

  元字符不代表本身的字面意思,有其特殊含义。以下是元字符的介绍

元字符 元字符名称 描述 
 . 点运算符

 匹配任意单个字符,不匹配换行符。

比如 .ar  匹配任意一个字符后面跟着是ar的字符串。

 [] 字符集

方括号指定一个字符集,在方括号中使用连字符来指定字符集的范围。

比如表达式 [Tt]he 匹配the 和 The。ar[.] 匹配 ar.

 [^] 否定字符集

 ^表示一个字符串的开头,但它在方括号的开头的时候,表示这个字符集是否定的。

比如[^c]ar 匹配一个后面跟着ar的除了c的任意字符,aaar是满足的,car是不满足的。

 * 重复次数  *

 在*之前的字符出现次数>=0。

比如,表达式 a*匹配0或多个以a开头的字符,along 是满足条件的。表达式[a-z]* 匹配一个行中所有以小写字母开头的字符串。

.* 可以匹配所有字符。

 + 重复次数 +

 在+之前的字符出现次数>=1。

比如 c.+t 匹配以c开头t结尾中间跟着至少一个字符的字符串。

重复次数 ?

在?符号前面的字符为出现0次或1次。

比如 [T]?he  可以匹配字符串 he 和 The。

{n,m} 量词

用例限定一个或一组字符可以重复出现的次数。

比如 [0-9]{2,3} 匹配最少2位最多3位0-9的数字;[0-9]{2,} 匹配最少2位数字;[0-9]{,9} 匹配最多3位数字; [0-9]{3} 匹配3位数字。

(xyz) (...)特征标群

一组写在(...)中的子模式,(...)中包含的内容会被看成一个整体。

比如表达式(ab)* 匹配连续出现0或多个ab,而ab* 则匹配连续出现0或多个b;

| 或运算符

判断条件或。

比如(T|t)he|car 匹配 thear 或 Thear 或 thcar 或 Thcar

转码特殊字符 反斜线在表达式中用于转码紧跟其后的字符。用于指定 { } [ ] / + * . $ ^ | ?这些特殊字符。
^ 锚点 :开头

^用来检查匹配字符串是否在所匹配字符串的开头。

比如 ^a 可以匹配abc但不能匹配 bcd;^(T|t)he 匹配以 The 或 the 开头的字符串。

 $ 锚点:结尾

$用来检查匹配字符串是否是最后一个。

比如(at.)$ 匹配以 at. 结尾的字符串

  • 简写字符集
简写 描述
. 除换行符以外的所有字符
w 匹配所有的字符数字,相当于 [a-zA-Z0-9]
W 匹配所有非字母数字,即符号,相等于[^w]
d 匹配数字,相当于[0-9]
D 匹配非数字,相当于[^d]
s 匹配所有的空格字符,相当于[ f p{Z}]
S 匹配所有非空格字符,相当于[^s]
f 匹配一个换页符
匹配一个换行符
匹配一个回车符
匹配一个制表符
v 匹配一个垂直制表符
p 匹配CR/LF,相当于 ,用来匹配DOS行终止符。
  • 零宽度断言

     此章节未看懂,后面再另起章节来阐述这个。

  • 标志

  标志也叫模式修正符,因为它可以修改表达式的搜索结果。

 标志 描述 
 i

忽略大小写 

比如:/The/gi 表示在全局搜索 The,且忽略大小写。

 g

全局搜索 

比如:表达式/.(at)/g 表示搜索任意字符(除换行符) + at,并返回全部结果。

 m

多行修饰符:锚点元字符^$工作范围在每行的起始 。

比如:/at(.)?$/m  标识每行匹配表达式 at(.)?$ 

  • 贪婪匹配与惰性匹配

   正则表达式默认采用贪婪匹配模式,会匹配尽可能长的子串,使用?将贪婪匹配转为惰性匹配。如/(.*at)/ 和 /(.*?at)/

参考:https://mp.weixin.qq.com/s/8hNSOF9He8uAEupRucyo-w

原文地址:https://www.cnblogs.com/smallzhen/p/14070481.html