正则表达式进阶
来源:互联网 发布:张煌言 知乎 编辑:程序博客网 时间:2024/05/21 22:46
giNamed capture
\b(?<year>\d\d\d\d)-(?<month>\d\d)-(?<day>\d\d)\b
Regex options:None
Regex flavors:.NET, PCRE 7, Perl 5.10, Ruby 1.9
\b(?'year'\d\d\d\d)-(?'month'\d\d)-(?'day'\d\d)\b
Regex options:None
Regex flavors:.NET, PCRE 7, Perl 5.10, Ruby 1.9
\b(?P<year>\d\d\d\d)-(?P<month>\d\d)-(?P<day>\d\d)\b
Regex options:None
Regex flavors:PCRE 4 and later, Perl 5.10, Python
以下示例是匹配日期,并要求年份的后两位、月份、日子这三个数字要是一样的。目标字符串【2012-12-12】【2008-08-08】
Named backreferences
\b\d\d(?<magic>\d\d)-\k<magic>-\k<magic>\b
Regex options:None
Regex flavors:.NET, PCRE 7, Perl 5.10, Ruby 1.9
\b\d\d(?'magic'\d\d)-\k'magic'-\k'magic'\b
Regex options:None
Regex flavors:.NET, PCRE 7, Perl 5.10, Ruby 1.9
\b\d\d(?P<magic>\d\d)-(?P=magic)-(?P=magic)\b
Regex options:None
Regex flavors:PCRE 4 and later, Perl 5.10, Python
匹配字符串次数设置
- 匹配一个数字100次,正则表达式:【\b\d{100}\b】
- 匹配一个32-bit的十六进制数字,正则表达式:【\b[a-f]{1,8}\b】
- 匹配一个可能带有字母"h"的十六进制数字,正则表达式:【\b[a-f0-9]{1,8}h?】
- 【{n}】表示匹配前面的字符n次
- 【{n, m}】m大于n,表示匹配前面的字符n次~m次
- 【h?】等价于【h{0,1}】, 表示h不出现,或者出现一次。
- 【{n, }】表示匹配前缀的字符可以出现n次到无穷次。
- 【\d{1, }】等价于【\d+】,表示数字出现1到无穷次。
- 【\d{0,}】等价于【\d*】,表示数字出现0到无穷次。
- 【\b\d++】首先会匹配到【1234】,最后一个【\b】匹配失败;
- 再将【\b\d++】回溯匹配到【123】,最后一个【\b】又匹配失败;
- 再将【\b\d++】回溯匹配到【12】,最后一个【\b】又匹配失败;
- 最后【\b\d++】回溯匹配到【1】,最后一个【\b】有匹配失败,最终失败返回。
- 贪心匹配表达式:【\d+】
- 占有量词表达式是在贪心表达式加上【+】,形如【\d++】,【*+】,【?+】
- 原子组表达式形如【(?>regex)】,例如【(?>\d+)】
形式:【(?(1)then|else)】
解释:
如果group1的内容被匹配,则接下来匹配then部分。如果group1部分没有匹配就匹配else部分。
在此说明group的概念,一个正则表达式中,每一对括号包含的内容称为一个group,第一个括号的内容称为group1,第二个称为group2.
举例:【(a)b(?(1)c|d)】将会匹配abc或者bd。
- [ 正则 ]正则表达式进阶!
- 【正则表达式】正则表达式进阶
- 正则表达式进阶
- JavaScript正则表达式 进阶
- 正则表达式的进阶
- 正则表达式进阶
- 进阶正则表达式
- Java正则表达式进阶
- 进阶级-正则表达式
- 正则表达式进阶
- 正则表达式进阶
- 正则表达式进阶
- JavaScript进阶:正则表达式
- 正则表达式进阶
- 正则表达式基础+进阶
- 正则表达式[进阶]
- 正则表达式——进阶
- Java进阶(九)正则表达式
- HDU 1258&&POJ 1564&&ZOJ 1711 DFS
- 【线段树(线段离散化+lazy)】poj 2528 Mayor's posters
- phoenix——提供hbase的sql操作的框架
- 将QMessageBox对话框中按钮的“Yes/No”转换成中文的“是/否”
- scanf函数的内存越界问题
- 正则表达式进阶
- JAVA内存溢出
- linux ls命令下复合模式位
- 推荐一些Linux下常用的软件
- QTCreator + QTEmbedded 在Ubuntu上创建嵌入式ARM开发环境
- 软件工程之可行性研究分析
- 区分Linux内建命令和外部命令——pwd
- 错排问题:
- ubuntu12.04安装mysql