正则表达式学习笔记

1、定位符

 "^":匹配行或字符串的起始位置。例如匹配一个以 a  开头的字符串,"^a"

 "$":匹配行或字符串的结尾。例如匹配一个以 b 结尾的字符串,"b$"

 "\b":匹配一个单词边界,也就是字和空格间的位置。例如提取出 "we are joker" 中的 "are","\bare\b"

 

2、限定符

  几个概念:

  1)贪婪:会首先匹配整个字符串,会选定尽可能多的内容,如果失败,就回退一个字符,然后再次尝试。每次回退一个字符,直到找到要匹配的内容或者没有字符可以回退。

  2)懒惰:从目标的开始位置匹配,每次检查一个字符,并寻找要匹配的内容,如此循环直到字符结尾处。

  3)占有:会覆盖整个字符串,然后尝试匹配,但只尝试一次,不会回溯。

  "*":重复 0 次或多次。可以不出现,也可以出现 1 次或多次。

   例如:hahahhhaaaha  正则:ha*h,则表示 a 可以出现 0 次,1 次或多次。匹配结果:hah、hh、haaah

  "+":重复 1 次或多次。至少出现 1 次。

   例如:hahahhhaaaha  正则:ha+h,则表示 a 可以出现 1 次或多次。匹配结果:hah、haaah

  "?":重复 0 次或 1次。最多 1 次。

   例如:hahahhhaaaha  正则:ha+h,则表示 a 最多可以出现 1 次。匹配结果:hah、hh

  "{n}":n 是一个非负整数,只能匹配前面的字符 n 次。

   例如:hahahhhaaaha  正则:ha{3},则表示 a 出现 3 次。匹配结果:haaa

  "{n,}":n 是一个非负整数,匹配前面的字符至少 n 次。

   例如:hahahhhaaahaa  正则:ha{2,},则表示 a 至少出现 3 次。匹配结果:haaa、haa

  "{n, m}":n、m 是一个非负整数,匹配前面的字符至少 n 次,最多 m 次。

   例如:hahahhhaaahaa  正则:ha{2,4},则表示 a 至少出现 2 次,最多出现 4 次。匹配结果:haaa、haa  

  "*?":重复任意次,但尽可能少重复。

   例如:acbab  正则: a.*?b,匹配结果:acb、ab,如果不加 ?,匹配结果 acbacb

  "+?":重复 1 次或更多次,但尽可能少重复。

    例如:acbab  正则: a.+?b,匹配结果:acb,如果不加 ?,匹配结果 acbacb   

  "??":重复 0 次或 1 次,但尽可能少重复。

   例如:a.??b 可以匹配出 aaacb 中的 acb,但是不能匹配出 aaaccb 中的 accb

 

3、其他元字符

   ".":匹配除换行符 \n 外的其他任意单个字符。

   "\d":匹配一个数字。也可以用 [0-9],如果要匹配多个数字可以用 "\d+" 。n 位的数字:"\d{n}"

   "\w":匹配数字、字母或下划线。如 "a\w+" 可以匹配出 "abc123acb"

   "\s":匹配单个空格,如果要匹配多个空格,可以用 "\s+"

   "[abc]":字符集合。匹配所包含的任意一个字符。

   "[^abc]":匹配字符集合外的任意字符。

   "[a-z]":字符范围,可以匹配指定范围内的任意字符。

   "[^a-z]":匹配不在指定范围内的任意字符。

 

4、一些常用的正则表达式

   1)数字和英文字符组成的字符串:^[A-Za-Z0-9]+$

   2) URL: [a-zA-Z]+://[^\s]*

posted @ 2019-03-18 17:07  biubiubiu83  Views(200)  Comments(0Edit  收藏  举报