parse expression [] java

Run Settings
LanguageJava
Language Version
Run Command
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)); } } }
Editor Settings
Theme
Key bindings
Full width
Lines