跟我学正则表达式!
想必很多人都对正则表达式都头疼.今天,我以我的认识,加上网上一些文章,希望用常人都
可以理解的表达方式.来和大家分享学习经验.
开篇,还是得说说 ^和66$他们是分别用来匹配字符串的开始和结束,以下分别举例说明
"^The": 开头一定要有"The"字符串;
"of despair$":结尾一定要有"of despair" 的字符串;
那么,
"^abc$": 就是要求以 abc 开头和以 abc 结尾的字符串,实际上是只有 abc 匹配
"notice": 匹配包含 notice 的字符串
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达
式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边
接着,说说 '*', '+',和 '?',
他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示:
"zero or more"相当于{0,},
"one or more"相当于{1,},
"zero or one."相当于{0,1},这里是一些例子:
"ab*":和 ab{0,}同义,匹配以 a 开头,后面可以接 0 个或者 N 个 b 组成的字符串("a", "ab",
"abbb", 等);
"ab+": 和 ab{1,}同义,同上条一样,但最少要有一个 b 存在 ("ab", "abbb", 等.);
"ab?":和 ab{0,1}同义,可以没有或者只有一个 b;
"a?b+$": 匹配以一个或者 0 个 a 再加上一个以上的 b 结尾的字符串.
要点, '*', '+',和 '?'只管它前面那个字符.
你也可以在大括号里面限制字符出现的个数,比如
"ab{2}": 要求 a 后面一定要跟两个 b(一个也不能少)("abb");
"ab{2,}": 要求 a 后面一定要有两个或者两个以上 b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求 a 后面可以有 2-5 个 b("abbb", "abbbb", or "abbbbb").