当前位置: 代码迷 >> J2SE >> 一个关于正则的有关问题
  详细解决方案

一个关于正则的有关问题

热度:96   发布时间:2016-04-23 19:40:15.0
一个关于正则的问题

Pattern p = Pattern.compile("and .+?\\.??.+?[.]??=\\?");
Matcher m = p.matcher("select * from bbb1 bxs1 where 1=1 and bxs1.id =  (select * from cc1 where 1=1 and cc1.id=? and cc1.name=?)");
int i=0;
while (m.find()) {
String value = m.group();
System.out.println(value);
i++;
}
//现在输出结果是
//and bxs1.id =  (select * from cc1 where 1=1 and cc1.id=?
//and cc1.name=?

//期望结果是
//and cc1.id=?
//and cc1.name=?

------解决思路----------------------

package net.csdn.question;

/*
 * //现在输出结果是
//and?bxs1.id?=??(select?*?from?cc1?where?1=1?and?cc1.id=?
//and?cc1.name=?
?
//期望结果是
//and?cc1.id=?
//and?cc1.name=?
 */
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) {
String regex = "and\\s+[\\w\\d]+\\.[\\w\\d]+\\s*=\\s*\\?";
Pattern p = Pattern.compile(regex);
String input = "select * from bbb1 bxs1 where 1=1 and bxs1.id =  (select * from cc1 where 1=1 and cc1.id=? and cc1.name=?)";
Matcher m = p.matcher(input);
// System.out.println(m.find());
while (m.find()) {
System.out.println(m.group());
}
}
}


------解决思路----------------------
引用:

package net.csdn.question;

/*
 * //现在输出结果是
//and?bxs1.id?=??(select?*?from?cc1?where?1=1?and?cc1.id=?
//and?cc1.name=?
?
//期望结果是
//and?cc1.id=?
//and?cc1.name=?
 */
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) {
String regex = "and\\s+[\\w\\d]+\\.[\\w\\d]+\\s*=\\s*\\?";
Pattern p = Pattern.compile(regex);
String input = "select * from bbb1 bxs1 where 1=1 and bxs1.id =  (select * from cc1 where 1=1 and cc1.id=? and cc1.name=?)";
Matcher m = p.matcher(input);
// System.out.println(m.find());
while (m.find()) {
System.out.println(m.group());
}
}
}

学习了
  相关解决方案