正则表达式

reference

cnblog:正则表达式

cnblog:正则表达式-贪婪与非贪婪匹配

cnblog:python正则表达式指南

cnblog:正则表达式 \b

cnblog:正则表达式 \w \s \d \b

张高子

正则表达式用来定向选择某些内容,能省去不少手动选择的时间。比如我说我就比较常用notepad++来匹配字符串。对于一个正常的表达式总是应该包括两部分,操作内容与逻辑组件。比方说1+1=2这种,1就是操作数,是一个操作对象,+,=就是对操作数进行逻辑运算得到的结果。

正则表达式的逻辑组件有以下几种:

  • {}:几种常见的用法:{n}表示匹配确定的n次,{n,}匹配至少n次,{n,m}匹配n~m次之间的次数。
  • []:匹配括号当中的任何一个字符。如果是26个字母当中的任何一个就可以用[a-z],如果包含大小的字母应该使用[a-zA-Z]。
  • ():就是一个范围,你可以用这个东西告诉匹配器你要匹配的是字符组还是单个字符,可以参见下面*的例子。
  • |:两个匹配条件进行或运算,比如说z|food就是要么是z要么是food。
  • ^:表示逻辑上取反。
  • *:匹配0或多个在它之前的子表达式,和通配符*差不多,可以针对字符或者字符组。字符组可以出现零次也可以出现多次,比如说zoo*(注:可以匹配到zooo,匹配不到zoozoo),和(zoo)*(注:可以匹配到zoozoo)。
  • +:同样匹配字符或者字符组,前面的字符或者字符组可以出现一次也可以出现多次。
  • ?:匹配前面的子表达式零次或一次,其余特性与上面差不多。因为匹配次数相对较少,所以也被称为非贪婪匹配。在这种情况下,一般使用a.*?b这种格式。举个例子这个匹配式可以在aabab中匹配到aab和ab。

与位置相关

  • ^:匹配一行的开始,比如说 ^zoo会匹配以zoo开始一行的情况;
  • $:匹配行尾,注意用法是zoo$,匹配一行的结束。
  • \A:仅匹配字符串开头;
  • \Z:仅匹配字符串末尾;
  • \b:代表单次的开头或者结尾,一般表示\w与\W之间的那个隐藏的位置。

操作数组件主要是各种通配符,主要的意义广泛的通配符有以下几种:

  • \d:代表十进制的数字,等价于[0-9]
  • \D:匹配非数字,等于 [^0-9]
  • \s:代表换行,Tab或者空格
  • \S:代表非空白字符,也就是上面的字符取反
  • \w:匹配大小写字母,数字或者下划线或者汉字(匹配汉字可能会出现问题)。
  • \W:匹配\w之外的字符。

相关推荐