1. 什么是正则表达式
正则表达式(Regular Expression)是一个字符串,它被用来描述或者匹配一系列符合某个句法规则的字符串。
正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
2. 常用通配符
a-z,A-Z,0-9,\d(数字),\w(字母、数字、下划线)
(空格)、\t(跳格)、\r(回车)、\n(换行)、\s(所有空白符)
.(除换行符外所有字符)
\b(单词的开始或结束)
^(字符串的开始)
$(字符串的结束)
3. 逻辑表达式
*(0个或多个)、?(0个或一个)、+(1个或多个)
{m}(m个)、{m,}(m个或更多)、{m,n}(m个至n个)
[多个字符](多选一)、[^多个字符](补集中多选一)
|(二选一,可连用表示多选一)
4. 贪婪模式与懒惰模式
贪婪(greedy)模式:匹配满足正则条件的尽量多的字符
懒惰(lazy)模式:匹配满足正则条件的尽量少的字符
语法:在表示数量的规则之后加上一个“?”
*-> *?, ? -> ??, + -> +?, {m,n}-> {m,n}?,{m,} -> {m,}?
举例:
源字符串:“abbbbb”
贪婪模式:“ab+”匹配“abbbbb”
懒惰模式:“ab+?”匹配“ab”
5. 举例说明
. 匹配单个字符,如c.t匹配cat、cut,但是不匹配cast
^ 匹配一行的开始,如^hello匹配hello world
$匹配一行的结束,如day$匹配nice day,但是不匹配daytime
[]匹配括号中任何一个字符,如c[auo]t匹配cat、cut和cot
[^]匹配除了括号中字符的所有字符,如[^ab1]匹配除了a、b、1的所有字符
\< \>匹配词的开始和结束,如\<the\>匹配the dog,但是不匹配other