想必很多人都对正则表达式都头疼,为了让跟多的新人方便的读懂,特写此文!
1、
^
和 $
,分别用来匹配字符串的开始和结束,举例说明如下:
“^abc$”
:就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配;
2、
‘*’
‘+’
和 ‘?’
他们用来表示一个字符可以出现的次数或者顺序,他们分别表示:
“zero or more”
相当于{0,},“ab*”:和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串(”a”, “ab”, “abbb”, 等);
“one or more”
相当于{1,},“ab+”:和ab{1,}同义,同上条一样,但最少要有一个b存在 (”ab” “abbb”等);
“zero or one.”
相当于{0,1},“ab?”:和ab{0,1}同义,可以没有或者只有一个b;
“a?b+$”
:匹配以一个或者0个a再加上一个以上的b结尾的字符串。
要点:’*’ ‘+’ 和 ‘?’ 只管它前面那个字符。
3、大括号{}
“ab{2}”
: 要求a后面一定要跟两个b(一个也不能少)(”abb”);
“ab{2,}”
: 要求a后面一定要有两个或者两个以上b(如”abb” “abbbb” 等);
“ab{3,5}”
: 要求a后面可以有2-5个b(”abbb”, “abbbb”, or “abbbbb”)。 看了上面的例子,你对{n,m}应该理解了吧。要注意的是,n和m都不能为负整数,而且n总是小于m。这样,才能最少匹配n次且最多匹配m次,如”p{1,5}”将匹配 “pvpppppp”中的前五个p。
4、小括号()
( )
合并整体匹配,并放入内存,可使用\1 \2…依次获取;
“a(bc)*”
: 匹配 a 后面跟0个或者一个”bc”;
“a(bc){1,5}”
: 一个到5个 “bc”;
5、字符 ‘|’,相当于OR操作
“hi|hello”
: 匹配含有”hi” 或者 “hello” 的字符串;
“(b|cd)ef”
: 匹配含有 “bef” 或者 “cdef”的字符串&