The Fox is watching you.

初探正则表达式(1)

感觉正则表达式挺重要的,一直有所耳闻,却只能copy别人的不能彻底理解。

本文基于菜鸟教程

普通字符

包括没有显式指定为元字符的所有可打印、不可打印的字符。

  • [ ] 匹配[ ]中的所有字符
  • [^ ]对上面取反
  • [A-K] 选定一个字符区间,小写同理
  • . 匹配换行符\n、\r以外的任何字符
  • [\s\S] 匹配所有。\s是所有空白符包括换行\S是非空白符不包括换行
  • \w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
  • \d 匹配任意阿里伯数字

非打印字符

  • \cx 匹配由x指明的控制字符。例如\cB等价于Control + B。x只能取大小写字母
  • \n 匹配换行
  • \r 匹配回车

特殊字符

一般可以对这些特殊字符用\转义,如要匹配$可以用\$

  • $ 匹配输入字符串的结尾位置
  • () 标记子表达式的开始或结束
  • * 匹配前面子表达式零次或多次
  • +*,但为一次或多次
  • ? 匹配前面子表达式零次或一次
  • ^[ ]外匹配字符串的开始位置,在内表示排除
  • { } 标记限定符表达式
  • | 指明两项之间的一个选择

限定符

匹配项写在表达式前面

  • *等价于{0,}+则是1
  • ?等价于{0,1}
  • {n} 确定匹配n次
  • {n,} 至少匹配n次
  • {n,m} 至少n次,至多m次

*+都是贪婪的,在后面加上?可以实现非贪婪或最小匹配
如:

/<.*>/

将匹配<h1>something</h1>一整句,而

/<.*?>/

将匹配至<h1>

添加新评论