import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author PheonixHkbxoic
* @email 1176479642@qq.com
* @version 2017-3-20 下午02:41:18
* @description Here is decription
*
*/
class Main {
public static void main(String[] args) {
final String sourceStr = "x<=3.54,2.1<=x,x<3.5,-4<x,x>Sqrt[Max[5,3]],Max[Log[2,Min[3,5]],Sqrt[Max[5,3]]]<=x,x>-6.3,x>=5.3,6.8>=x,3.2>x,x<Sqrt[3],x<2^(1/3),x<Max[2,4],x<Log[2,3],x<Min[2,Max[3.3,2]],x<Log[3,Min[2,Max[3.3,2]]]";
List<String> parseList = parseExp(sourceStr);
print(parseList);
System.out.println("--------");
List<String> matchList = getMatch(parseList, "x>=(.+)|(.+)<=x");
print(matchList);
}
/**
* 解析式子
* @param string sourceStr 源字符串
* @return array
*/
private static List<String> parseExp(String sourceStr){
int len = sourceStr.length();
List<String> parseList = new ArrayList<String>();
int pair = 0;
String exp = "";
String currChar = "";
for (int i = 0; i < len; i++) {
currChar = sourceStr.substring(i, i+1);
exp += currChar;
if("[".equals(currChar)){
pair++;
}else if("]".equals(currChar)){
pair--;
}else if(",".equals(currChar)&&pair==0){
parseList.add(exp.substring(0,exp.length()-1));
exp = "";
}
}
return parseList;
}
/**
* 获取式子匹配正则结果
* @param array $list 式子数组
* @param string pattern 正则
* @return array
*/
private static List<String> getMatch(List<String> list, String pattern) {
List<String> matchList = new ArrayList<String>();
int size = list.size();
for(int i=0;i< size;i++) {
Matcher matcher = Pattern.compile(pattern).matcher(list.get(i));
if(matcher.find()) { //如果正则匹配成功,记录到命中数组
String group1 = matcher.group(1);
if(group1==null||"".equals(group1)){
matchList.add(matcher.group(2));
}else{
matchList.add(group1);
}
}
}
return matchList;
}
/**
* 打印数组--用于测试
* @param list
*/
private static void print(List<String> list){
int size = list.size();
for (int i = 0; i <size; i++) {
System.out.println(list.get(i));
}
}
}