浅学正则表达式

来源:互联网 发布:相声知乎 编辑:程序博客网 时间:2024/06/05 20:48

最近在项目里要用到正则表达式来校验字符串,是否符合我们约定的规则,在网上找了几个表达式,发现看不懂,于是花了点的时间,简单得学习了一下正则,总结如下:


首先,给大家推荐一个学习正则表达式的网站:http://www.regexlab.com/zh/regref.htm


正文:

定义:一个字符串定义(描述)一个特征(规则),检验另一个字符串是否符合此特征(规则)。

一、基本语法
1.正则可以用来干什么?
1.验证字符串是否符合某特征
2.用来查找字符串
3.用来替换


2.转义字符
\r,\n    代表回车和换行符
\t       代表制表符
\\       代表"\"本身


特殊字符前加 \ ,代表 \ 本身
\^    匹配^符号本身
\$    匹配$符号本身
\.    匹配小数点.本身


3.能够与'多种字符'匹配的表达式
\d    任意一个数字,0~9中的任意一个
\w    任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中任意一个
\s    包括空格、制表符、换页符等空白字符的其中任意一个
.  小数点可以匹配除了换行符(\n)以外的任意一个字符


4.自定义能够匹配'多种字符'的表达式
使用[]包含一系列字符,能够匹配其中任意一个字符。例如:[abc]匹配'a'或'b'或'c'
使用[^]包含一系列字符,则能够匹配其中字符之外的任意一个字符。例如:[^a] 匹配a以外的任意一个字符

5.修饰匹配次数的特殊符号
'次数修饰'放在'被修饰的表达式'后边,比如"[abc][abc]" 可以写成 "[abc]{2}"

{n}     表达式重复n次
{m,n}   表达式至少重复m次,最多重复n次
{m,} 表达式至少重复m次
?       匹配表达式0次或者1次,相当于{0,1}
+       表达式至少出现1次,相当于{1,}
*       表达式不出现或出现任意次,相当于{0,}
6.代表抽象意义的特殊符号
^       与字符串开始的地方匹配,不匹配任何字符
$       与字符串结束的地方匹配,不匹配任何字符
\b 匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

特殊说明:\b 与 ^ 和 $ 类似,本身不匹配任何字符,但是它要求在匹配结果中所处位置的左右两边,其中一边是 \w 范围,另一边是非 \w 的范围。


| 左右两边表达式之间 "或" 关系,匹配左边或者右边
() 1.在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
2.取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到




二、正则表达式中的一些高级规则
1.匹配次数中的贪婪与非贪婪
1.贪婪    在匹配的时候,总是尽可能多的匹配符合它规则的字符。
 + {m,n} *
2.非贪婪  在修饰匹配次数的特殊符号后再加上一个 ? ,则可以使匹配次数不定 的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的"不匹配"。
2.反向引用 \1,\2
表达式后面的部分,可以使用前面"括号内的子匹配已经匹配到的字符串"。引用方法是"\"加上一个数字。"\1"引用第一对括号内匹配到的字符串,"\2"引用第二对括号内匹配到的字符串^以此类推,如果括号内包含另一对括号,则外层的括号先排序号,就是哪一对的左括号"("在前,那这一对就先排序号
3.预搜索
正向预搜索
(?=xxx)   (?!xxx)
反向预搜索
(?<=xxx)  (?<!xxx)
0 0