1、百度文档
http://wenku.baidu.com/link?url=dkpaAAk7kwwjkq_TMxDPkCfswDKOHQoUQRO2opVCqDitxTAz4DysF9JyJPZlDZMoFBO5t0EbIk4Dvdd3fnsZN_Pt9j9VOPdsJnvj6MwcmPa
http://www.cnblogs.com/Jacklovely/p/5605861.html
2、常用
2.0 “()” 和 “[]” 的区别
(土建|建筑) : 只要包含“土建” 或者 “建筑” 就能识别,“土建”和“建筑”是一个整体
[土建|建筑] : 只要包含"土","建","建",“筑” 四个任何一个都可以识别
2.1 (土建|建筑)(?!(.*(分包|装饰))) //包含土建或者建筑但是不能包含分包也不能包含装饰
2.2 中括号+竖线表示并列关系,例如
[钢筋|圆钢|箍筋].*级
2.3 不包含
2.3.1 单个不包含:
2.3.1.1 格式 (?!(.*(不包含的内容))) , 例子: C.*现浇(?!(.*(楼梯))).*梁 :红色表示不能包含楼梯,蓝色:表示可以包含任何内容
2.3.2 多个不包含格式: (?!(.*(不包含A|不包含B)))
2.3.3 疑惑:不能单独使用,例如,如果想判断一个字符串不包含楼梯,那么不能单独使用:(?!(.*(楼梯))),
如果单独,计算结果不理想,解决办法,在此表达式前面添加其他说明,或者将不包含的内容从括号提出一部分
2.3.4 (?<!李智)土建(?![分包|装饰]) : 土建左边不能有李智,右边及不能有分、包、装、饰等任何一个字.
(?<!((李智).*))土建(?!(.*(分包|装饰))):土建左边可以有任何内容,但是不能有李智
土建右边可以有任何内容,但是不能有'分包' 或者 '装饰'
2.3.5 土建(?!(.*(李智))):土建右边可以有任何内容,但是不能有李智
2.3.6 土建(?!(李智)):土建后面不能紧跟李智
2.3.7 (?<!((地).*))面砖 面砖左边可以有任何内容,但是不能有地
2.3.8 (?<!地)面砖 面砖不能紧跟在地后面
2.4 一个数字:[0-9.]+
例如:DN[0-9.]+mm2 ,可以匹配,DN10mm2, DN5mm2,DN34.8mm2
2.5 导线.*[0-9.]+mm2(以内|以下)
由于以内,一下是多个字符,所以不能使用中括号,必须使用小括号
2.6 定额名称之间空白 s+
匹配模式:防护栏杆s+[0-9.]+m 可以匹配:防护栏杆 0.9M
2.7 向后查找
2.7.1 取一个数字,这个数字的前面要包含一些字符
(?<=厚度(mm):)[0-9]+ 数字前面要包含 厚度(mm):
2.7.2 (?<=Cs*)[0-9]+(?=(现浇)?砼) 提取砼的型号数字
文本:实际厚度(mm):140 换为【C303现浇砼 碎石<31.5】[商砼] 将提取出来 303
2.8 模板后面不能包含基础、墙、垫层、梁、板、楼梯
模板(?!(.*(基础(s+|$)|墙|基础.*形|垫层(s+|$)|梁(s+|$)|板(s+|$)|柱(s+|$)|板.*形|楼梯)))
2.9 不包含道路、桥梁、供水、排水、燃气、路灯
^((?!(道路|桥梁|供水|排水|燃气|路灯)).)*$
2.10 只能包含:装饰 或者 装修,前后都不能包含土建,建筑
(?<!((土建|建筑).*))(装饰|装修)(?!(.*(土建|建筑)))
2.11 反向应用案例,例如下面一段html,只提取蓝色的项目名称
项目名称</td> <td style="border-right:#000 1px solid;border-bottom:#000 1px solid;">良乡北站10KV出线电力沟道工程(第二标段)</td>
正则如下:(?<=项目名称</td> <[^>]+>).*?(?=</td>)
3、http://www.cnblogs.com/dwlsxj/p/3532458.html
3、mysql:http://www.jb51.net/article/72928.htm
4、https://www.host900.com/index.php/articles/211/
5、反向引用
5.1 案例说明。将多个sql语句变为一个sql语句
(select count(*) from ce_notice_file;
(select count(*) from bid_invitation;
(select count(*) from ce_open_bid;
(select count(*) from ce_open_bid_detail;
希望变成一下样式:
select
(select count(*) from ce_notice_file ) as ce_notice_file,
(select count(*) from bid_invitation ) as bid_invitation,
(select count(*) from ce_open_bid ) as ce_open_bid,
(select count(*) from ce_open_bid_detail ) as ce_open_bid_detail
5.2 需要在匹配中提取表名,并且在替换中重复应用匹配中的表名,正则如下:
from (.*?);
5.2.1 括号内容的东西=表名,在替换是可以使用 1 应用匹配到的表名
本正则的意思,匹配from和;之间的内容,并将from和;之间的内容存入一个变量 1
5.2.2 替换表达式:
from 1 ) as 1,
5.2.3 本正则在Notepad++中使用通过,如图: