正则表达式
2016-04-02 21:13
204 查看
正则表达式
特殊字符
^ : 标定限定符开始的地方。$ : 匹配输入字符串的结尾位置。
() : 标记一个子表达式的开始和结束位置。
* : 匹配前面的子表达式零次或多次。
+ : 匹配前面的子表达式一次或多次。
. : 匹配换行符以外的任何字符 。
[]:匹配一个中括号开始和结束的地方。
\ : 限定表达式。
限定符
{ : 标记限定符开始的地方{n} : n为非负整数,至少匹配n次。
{n,m}: 最少匹配n次,最多匹配m次。
\w : 包括下划线之外的任何单词字符。类似于[A-Za-z0-9_]
\W : 匹配任何非单词字符 相当于[^A-Za-z0-9_]
\d : 匹配一个数字 [0-9]
\D : 匹配一个非数字[^0-9]
[^xyz] 匹配非包含的任意一个字符。
\B :匹配非边界字符
\b:匹配边界字符 指定字符两侧不能同时为字母数字下划线。
\s : 任意空白字符 相当于[\r\n\f\t\v]
\S : 任意非空白字符 相当于 [^\r\n\f\t\v]
[a-d[m-p]] : a到d,或者m到p [a-dm-p] 并集
[a-z&&[def]] : def a-z与def的交集
[a-z&&[^bc]] : 除bc外,a到z的集合。
量词返回目录
贪婪量词(greedy) | 勉强量词(relunctant) | 侵占量词(possessive) | 意义 |
---|---|---|---|
X? | X?? | X?+ | 匹配X零次或一次 |
X* | X*? | X*+ | 匹配X零次或多次 |
X+ | X+? | X++ | 匹配X一次或多次 |
X{n} | X{n}? | X{n}+ | 匹配X n次 |
X{n,} | X{n,}? | X{n,}+ | 匹配X至少几次 |
X{n,m} | X{n,m}? | X{n,m}+ | 匹配X至少n次,但不多于m次 |
勉强:从输入字符串的开始处开始,每次勉强的吞噬掉一个字符串来寻求匹配,最后才会尝试整个输入的字符串。
侵占:吞掉整个输入的字符串,尝试着一次匹配。
捕捉组
捕捉组,简而言之为我们能从指定字符串中捕捉到我们所要的子串,然后分组,根据组号能取出我们所要的数据。AGE:
组号为括号的顺序A(b(c)de(fg))hi(jk)lmn
组号 | 内容 | 解释 |
---|---|---|
组0 | A(b(c)de(fg))hi | 组0为默认的 |
组1 | b(c)de(fg) | 组1为从左到右第一个括号括起来的内容 |
组2 | c | 组2为第二个括号括起来的内容 |
组3 | fg | 组3位从左到右括号括起来的内容 |
组4 | jk | 组4为从左到右第四个括号括起来的内容 |
反向引用
匹配字符串的捕获部分存放在内存中,通过反向引用稍后会继续调用。age: 134(\d\d)\1
匹配以134开头的后面两个数字重复两次的串。
\1代表重复组1括号内的的数据。
反向引用为反斜线+组号
高级分组 非捕捉组
以(?)开头的组是非捕捉组,不捕捉文本,也不针对组合计数,如果小括号以?开头,那么这个分组就不会捕捉分组。表达式 | 解释 |
---|---|
(?=X) | 零宽度先行断言,仅当表达式在此位置的右侧才能继续匹配。 |
(?!X) | 零宽度负先行断言,仅当子表达式X不在此位置。 |
(?<=X) | 零宽度正后发断言,仅当子表达式X不在此位置的右侧匹配才能继续匹配。 |
(?<!X) | 零宽度负后发断言,仅表达式X不在此位置左侧才能继续匹配。 |
AGE:
(?<!4)56(?=9) 56前面不能为4,后面必须匹配9。注释
表达式 | 含义 |
---|---|
(?#comment) | comment只代表注释,不代表任何含义。 |
相关文章推荐
- js+css分页效果
- dl.l.google.com无法访问
- 电感的主要参数
- HDU 5655 CA Loves Stick
- BestCoder Round #78 (div.2)
- 计算机病毒实践汇总一:简单静态分析(分析程序)
- 关于创新
- ZOJ 3710 Friends(思维,最短路,图论)
- Android-文本类组件(二)
- 学习进度条(五)
- 研究生第一个月感悟
- latex的数学公式方法
- 二叉树中权值最大的叶节点到权值最小的叶节点的距离
- 内部类
- 采用主成分法实现因子分析中的参数估计
- 获取系统时间,计算时间差,各种时间格式之间转换
- 关于Android开发的40条优化建议
- 压缩感知的常见测量矩阵
- 构建之法阅读笔记05
- 最大连续子数组以及拓展