正则表达式

用来匹配需要的字符串。

1、标准字符集合

表达式:

  \d:任意数字字符。    \D:任意除了数字以外的字符。

  \w:任意字母、数字、下划线字符。  \W:任意除了字母数字下划线的字符。

  \s:任意空白字符。    \S:任意空白字符以外的字符。

  . :任意除了换行符的字符。

例子:

  表达式:\d\d\d  匹配:三个连续数字

  表达式:a\da    匹配:字符串“a数字a”

2、自定义字符集合

格式:

  使用中括号括起来表示:[ 需要匹配的内容 ],^表示取反,-表示连续。

例子:

  表达式:[1a8k]  匹配:字符串中的”1,a,8,k“ 

  表达式:[1-8]   匹配:字符串中的“1到8中的任意一个字符”

  表达式:[^a-j]  匹配:字符串中的“除了a-j之间的一个字符”

3、量词

在表达式后面加上量词,表示表达式重复几次。

格式:

  {n}、{n,m}、{m,}、?、+、*

例子:

  表达式:a\d{2}b   等价于:a\d\db 匹配:“a11b、a12b、a13b、a14b、..........

  表达式:\d{1,4}    等价于:\d 或 \d\d 或 \d\d\d 或\d\d\d\d  匹配:1个到4个连续的数字,优先匹配数量最多的字符串(4个连续)=贪婪模式

  表达式:\d{1,4}?   等价于:\d 或 \d\d 或 \d\d\d 或\d\d\d\d  匹配:1个到4个连续的数字,优先匹配数量最少的字符串(1个连续)=非贪婪模式  

  表达式:\d{1,}      匹配:1个或者无数个连续的数字。

  表达式:a\d?b      等价于:a\d{0,1}b  匹配:1个数字或0个数字,比如:“ab、a1b、a6b"

  表达式:a\d+b      等价于:a\d{1,}b  匹配:1个数字及1个以上的连续数字,比如:“a1b、a111b、a123456b”

  表达式:a\d*b    等价于:a\d{0,}b  匹配:0个及0个以上的连续数字,比如:“ab,a111b,a312321b”

4、字符边界

匹配符合条件的位置(零宽),不是字符。

格式:

  ^    匹配位置:字符串开头

  $    匹配位置:字符串结尾

  \b   匹配位置:前面的字符和后面的字符不全是\w(字符数字下划线)

例子:

  表达式:^a  匹配到:开头为a的字符a。

  表达式:$a  匹配到:字符串结尾为a的字符a。

  表达式:love\b  匹配到:后面不是字符数字下划线的love。

  表达式:\blove\b  匹配到:前后都不是字符数字下划线的love。

5、匹配模式

  •   忽略大小写模式:大小写不分。
  •   单行模式:把整个文档当作一个字符串。
  •   多行模式:一行就是一个字符串。

        多行模式下,匹配整个文档的开头位置使用\A,结尾位置为\Z。

6、选择符和分组、反向引用

格式:

  |       表示:或

 ()         表示:用来组织表达式了,它的匹配结果会被存下来,可被反向引用

 (?:)      表示:非捕获组。

  \n       表示反向引用被捕获的字符串,n为1开始的编号,由左至右,第一个 (  的捕获组通过\1引用)。

例子:

  表达式:pig|cat            匹配到:pig或者cat字符串。

  表达式:(\d{2})             匹配到:两个连续的数字。

  表达式:(\d{2})\1          匹配到:相同的两个连续的数字,例如“1919、1010、3232”。

  表达式:(a\d\d(bb))\2        匹配到:a+两个连续数字+bb+bb 。

  表达式:(\d{2})\1       匹配到:两个连续的数字,非捕获组的信息不会存储下来,引用不到。

7、预搜索

搜索指定位置。

格式:

  (?=字符串)        匹配:后面为指定字符串的位置。

  (?!字符串)         匹配:后面不为指定字符串的位置。

  (?<=字符串)         匹配:前面为指定字符串的位置。

  (?<!字符串)       匹配:前面不为指定字符串的位置。

例如:

  [a-z]+(?=ing)       匹配:以ing结尾的任意长度的字母串,不包括ing。

  [a-z]+(?!ing)        匹配:不以ing为结尾的任意长度的字母串,它会匹配going、doing。

  (?<=aaa)[0-9]{3}      匹配:前面是aaa的连续三位数字串。

  (?<!aaa)[0-9]{3}       匹配:前面不是aaa的连续三位数字串。

应用:

常用正则表达式大全

posted @ 2022-11-27 19:23  在博客做笔记的路人甲  阅读(73)  评论(0编辑  收藏  举报