正则表达式的总结

时间:2022-03-04 18:47:08

  第一次接触正则表达式还是听师兄说起过的,总感觉很难。在买书的时候看到《正则表达式必知必会》时果断买下来啦,还被嘲笑30分钟可以入门的事,一定要每天一章一章地看,发现确实不难。也许每天一章一章地看只是想证明我可以坚持一件事吧~

  下面是自己的一些总结,方便自己和他人查阅。

  正则表达式用来匹配和处理文本的字符串,它经常被简称为模式,其实就是一些由字符构成的字符串。这些字符可以是普通字符(纯文本)或元字符(有特殊含义的特殊字符)。正则表达式语言是内置于其他语言或软件产品里的“迷你”语言。主要用途是用于“搜索”和“替换”。

  正则表达式中的特殊字符

  .:可以匹配除换行符以外的任意单个字符

  \:用来对特殊字符进行转义

  []:用来定义一个字符集合,其含义是必须匹配该集合里的字符之一。有两种形式:1,把所有字符列举出来;2,利用原字符“-”以字符区间的方式给出;[0123456789]与[0-9]等价

  ^:只有当它出现在一个字符集合里(被放在[和]之间)并紧跟在左方括号[的后面时,它是“求非”的作用(如:非数字[^0-9])。如果是在一个字符集合的外面并处于一个模式的开头,它匹配字符串的开头

  \b:指定一个单词边界(\bcap\b匹配cap;\bcap匹配captain,cap,cape;cap\b匹配cap,recap)

  $:字符串的结尾

  [\b]:退格

  \f:换页

  \n:换行

  \r:回车

  \t:Tab键

  \v:垂直制表符

  \d:任何一个数字字符(等价于[0-9])

  \D:任何一个非数字字符(等价用于[^0-9])

  \w:任何一个字母(大小写都可),数字,下划线(等价于[a-zA-Z0-9_])

  \W:任何一个非字母数字或非下划线字符

  \s:任何一个空白字符

  \S:任何一个非空白字符

  +:匹配字符或字符集合的一次或多次重复出现

  *:匹配字符或字符集合的零次或多次重复出现

  ?:匹配字符或字符集合的零次或一次重复出现

  {}:设定匹配字符或字符集合重复出现次数的最小值和最大值

  ():子表达式

  |:或者

  回溯引用匹配

  回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式

  \1:代表模式里的第一个子表达式

  \2:代表模式里的第二个子表达式

  以此类推;

  回溯引用在替换中的应用:

  例子:

  文本:

  313-555-1234

  248-555-9999

  810-555-9000

  正则表达式:

  (\d{3})(-)(\d{3})(-)(\d{4})

  替换:

  ($1) $3-$5

  结果:

  (313) 555-1234

  (248) 555-9999

  (810) 555-9000

  前后查找

  java、.NET,PHP和Pert都支持向后查找,而javaScript不支持

  向前查找:以(?=)开头的子表达式

  例子:

  文本:

  http://www.forta.com

  http://mail.forta.com

  ftp://ftp.forta.com

  正则表达式

  .+(?=:)

  结果:

  http://www.forta.com

  https://mail.forta.com

  ftp://ftp.forta.com

  向后查找:以(?<=)开头的子表达式

  例子:

  文本:

  ABC01: $23.45

  HGG42: $5.32

  Tatal items found:4

  正则表达式

  (?<=\$)[0-9.]+

  结果:

  ABC01: $23.45

  HGG42: $5.32

  Tatal items found:4