(?=exp)
表示查找一个位置,这个位置的后面是exp
(?<=exp)
表示查找一个位置,这个位置的前面是exp
(?!exp)
表示查找一个位置,这个位置的后面不是exp
(?<!exp)
表示查找一个位置,这个位置的前面不是exp
[color=red]注明一下:{
(?<=exp),(?<!exp)
逆序环视
根据语言的不同exp是有限制的
大部分不允许有+和*
在JavaScript里是不允许使用(?<!exp)和(?<=exp)的 ,但是可能查找其后面的位置
<script type="text/javascript">
var str="A12B34";
var temp=str.match(/(?<!a)\d+/ig);
document.write(temp) //不可以
</script>
<script type="text/javascript">
var str="A12B34";
var temp=str.match(/\d+(?!b)/ig);
document.write(temp) //可以
</script>
}[/color]
^,$,\b,\z,\Z都是查找位置的
写个工作中的实际业务例子
(?<!')(T#.+?~T)(?!')如果是((?<!')([A-Z])#.+?~\2(?!'))就是任何字母#~字母对但是不支持嵌套 (?<!')([A-Z])#.+?~\1(?!') 不是 $1
replace 成 '$1'
R#case when (instr('客户岗位→基本信息→岗位名称','初级程序员')>0 OR instr('客户岗位→基本信息→岗位名称','初级架构师')>0 OR instr('客户岗位→基本信息→岗位名称','初级项目经理')>0) AND instr('客户员工→基本信息→员工姓名','李')>0 AND ('数据采集→出生年月'=to_date('2010-06-15','yyyy-mm-dd') OR '数据采集→出生年月'>=to_date('2010-06-03','yyyy-mm-dd')) OR 数据采集→出勤天数<=50 AND to_char('客户部门→部门考核标准→生效日期')<=to_date('2010-06-01','yyyy-mm-dd') then 'T#福利模板.养老个人应扣~T' else 'T#福利模板.养老个人应扣~T' + [color=red]T#福利模板.养老个人应扣~T[/color] end~R
结果
R#case when (instr('客户岗位→基本信息→岗位名称','初级程序员')>0 OR instr('客户岗位→基本信息→岗位名称','初级架构师')>0 OR instr('客户岗位→基本信息→岗位名称','初级项目经理')>0) AND instr('客户员工→基本信息→员工姓名','李')>0 AND ('数据采集→出生年月'=to_date('2010-06-15','yyyy-mm-dd') OR '数据采集→出生年月'>=to_date('2010-06-03','yyyy-mm-dd')) OR 数据采集→出勤天数<=50 AND to_char('客户部门→部门考核标准→生效日期')<=to_date('2010-06-01','yyyy-mm-dd') then 'T#福利模板.养老个人应扣~T' else 'T#福利模板.养老个人应扣~T' +'T#福利模板.养老个人应扣~T' end~R
[size=large][b]将 没有单引号的福利模板外面加上了 单引号[/b][/size]
[img]http://dl.iteye.com/upload/attachment/291064/22ec1c14-2c76-3bc6-81a7-14a09e596865.jpg[/img]
表示查找一个位置,这个位置的后面是exp
(?<=exp)
表示查找一个位置,这个位置的前面是exp
(?!exp)
表示查找一个位置,这个位置的后面不是exp
(?<!exp)
表示查找一个位置,这个位置的前面不是exp
[color=red]注明一下:{
(?<=exp),(?<!exp)
逆序环视
根据语言的不同exp是有限制的
大部分不允许有+和*
在JavaScript里是不允许使用(?<!exp)和(?<=exp)的 ,但是可能查找其后面的位置
<script type="text/javascript">
var str="A12B34";
var temp=str.match(/(?<!a)\d+/ig);
document.write(temp) //不可以
</script>
<script type="text/javascript">
var str="A12B34";
var temp=str.match(/\d+(?!b)/ig);
document.write(temp) //可以
</script>
}[/color]
^,$,\b,\z,\Z都是查找位置的
写个工作中的实际业务例子
(?<!')(T#.+?~T)(?!')如果是((?<!')([A-Z])#.+?~\2(?!'))就是任何字母#~字母对但是不支持嵌套 (?<!')([A-Z])#.+?~\1(?!') 不是 $1
replace 成 '$1'
R#case when (instr('客户岗位→基本信息→岗位名称','初级程序员')>0 OR instr('客户岗位→基本信息→岗位名称','初级架构师')>0 OR instr('客户岗位→基本信息→岗位名称','初级项目经理')>0) AND instr('客户员工→基本信息→员工姓名','李')>0 AND ('数据采集→出生年月'=to_date('2010-06-15','yyyy-mm-dd') OR '数据采集→出生年月'>=to_date('2010-06-03','yyyy-mm-dd')) OR 数据采集→出勤天数<=50 AND to_char('客户部门→部门考核标准→生效日期')<=to_date('2010-06-01','yyyy-mm-dd') then 'T#福利模板.养老个人应扣~T' else 'T#福利模板.养老个人应扣~T' + [color=red]T#福利模板.养老个人应扣~T[/color] end~R
结果
R#case when (instr('客户岗位→基本信息→岗位名称','初级程序员')>0 OR instr('客户岗位→基本信息→岗位名称','初级架构师')>0 OR instr('客户岗位→基本信息→岗位名称','初级项目经理')>0) AND instr('客户员工→基本信息→员工姓名','李')>0 AND ('数据采集→出生年月'=to_date('2010-06-15','yyyy-mm-dd') OR '数据采集→出生年月'>=to_date('2010-06-03','yyyy-mm-dd')) OR 数据采集→出勤天数<=50 AND to_char('客户部门→部门考核标准→生效日期')<=to_date('2010-06-01','yyyy-mm-dd') then 'T#福利模板.养老个人应扣~T' else 'T#福利模板.养老个人应扣~T' +'T#福利模板.养老个人应扣~T' end~R
[size=large][b]将 没有单引号的福利模板外面加上了 单引号[/b][/size]
[img]http://dl.iteye.com/upload/attachment/291064/22ec1c14-2c76-3bc6-81a7-14a09e596865.jpg[/img]