JDK版本1.6
正向预查的意思就是比如你要查 finds 中的find 按finds来查 但是真正的匹配结果又不算s
运行上面这对代码期望是得到dfaf dfadf 但是实际得到的是dfaf ) dfadf
首先怀疑是不是因为)是正则中的特殊符号(事实上已经加上\\处理过了)
然后稍稍改动代码
这回匹配m字符
结果:运行上面这对代码期望是得到dfaf dfadf 但是实际得到的是dfaf m dfadf
真不知道是怎么回事了。。。 难道是bug?
请各位看看我是不是对java中的正向预查理解有误
另外,试了下javascript中的正向预查
结果很正常:)被保留了
自己试着做个分页中出现的问题。。 GOOGLE一搜 到处都是正则的匹配语法,没有正向预查的例子 , 我想这些匹配的规定我都懂了。。。 没想到还有这么一个问题
正向预查的意思就是比如你要查 finds 中的find 按finds来查 但是真正的匹配结果又不算s
Pattern p = Pattern.compile("order\\s+by.+?(?=\\))");
//这个代码中的换成Pattern p = Pattern.compile("order\\s+by.+(?=\\))");结果依旧.(就是不要贪婪模式)
String query="dfaf order by hx ) dfadf";
Matcher m = p.matcher(query);
while(m.find()){
query=query.replace(m.group(),"");
m.reset(query);
}
System.out.println(query);
运行上面这对代码期望是得到dfaf dfadf 但是实际得到的是dfaf ) dfadf
首先怀疑是不是因为)是正则中的特殊符号(事实上已经加上\\处理过了)
然后稍稍改动代码
Pattern p = Pattern.compile("order\\s+by.+(?=m)");
String query="dfaf order by hx m dfadf";
Matcher m = p.matcher(query);
while(m.find()){
//System.out.println(m.toString());
query=query.replace(m.group(),"");
m.reset(query);
}
System.out.println(query);
这回匹配m字符
结果:运行上面这对代码期望是得到dfaf dfadf 但是实际得到的是dfaf m dfadf
真不知道是怎么回事了。。。 难道是bug?
请各位看看我是不是对java中的正向预查理解有误
另外,试了下javascript中的正向预查
<script>
var sql="select dfd from dfa (order by hx) dfdf order by end";
var reg=/order\s+by.+(?=\))/;
alert(sql.replace(reg,""));
</script>
结果很正常:)被保留了
自己试着做个分页中出现的问题。。 GOOGLE一搜 到处都是正则的匹配语法,没有正向预查的例子 , 我想这些匹配的规定我都懂了。。。 没想到还有这么一个问题