package com.e2u.re; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestRe { private static String bigStr = "Error item\n error code : 1012309\r\nsdfsdasdfsda"; private static String bigStr3 = "\\r\\r\\n*******r\\r\\n***********************"; private static void test0() { // String regex = // "UNDEFINED|10{1,3}_MBIT_PER_SEC(,10{1,3}_MBIT_PER_SEC)*"; // String regex = ".*mplsvpn [0-9]* not found.*"; // String regex = "\\d+"; String regex = "|/e1=1"; regex = "[^\\.]*"; //This represents the string that doesn't contain "ab"; regex = "(?:(?!ab).)*"; String[] testVals = { "", "ab12", "/e1=1", "/e1=1aaa", "0", "ab34", "5", "12", "1000", "C:\\mu.java", "-012", "xyzabcdabe", "aaa.", bigStr3}; for(int i = 0; i < testVals.length; i++) { System.out.print("REGEX="); System.out.print(regex); System.out.print(", val="); System.out.print(testVals[i]); System.out.print(", MATCH? ["); if(testVals[i].matches(regex)) { System.out.print("YES"); } else { System.out.print("NO"); } System.out.print("]"); System.out.println(); } } private static void test1() { Pattern pattern = Pattern.compile("error code : (.+)$", Pattern.MULTILINE); // Matcher matcher = pattern.matcher(" error code : 1012309"); Matcher matcher = pattern.matcher(bigStr); while(matcher.find()) { System.out.println(matcher.group(0)); System.out.println(matcher.group(1)); } } public static String replace(final String sourceString, Object[] object) { String temp = sourceString; for(int i = 0; i < object.length; i++) { String[] result = (String[]) object[i]; Pattern pattern = Pattern.compile(result[0]); Matcher matcher = pattern.matcher(temp); temp = matcher.replaceAll(result[1]); } return temp; } private static void test2() { String str = "Java目前的发展史是由{0}年-{1}年"; String[][] object = { new String[] { "\\{0\\}", "1995" }, new String[] { "\\{1\\}", "2007" } }; System.out.println(replace(str, object)); } private static void test3() { Pattern pattern = Pattern.compile("href=\"(.+)\""); Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>"); if(matcher.find()) { System.out.println(matcher.group(1)); } } private static void test4() { Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+"); Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf"); StringBuffer buffer = new StringBuffer(); while(matcher.find()){ buffer.append(matcher.group()); buffer.append("\r\n"); System.out.println(buffer.toString()); } } public static final char SPLITER_EQUAL = '='; static public boolean MatchIdValues(List<String> idNameValues, String pattern) { if ( pattern == null || pattern.isEmpty() ) return true; if ( idNameValues == null ) return false; //split the pattern int spl = pattern.charAt(0); int len = pattern.length(); int i = 1; int count = 0; while ( i < len ){ String pn = ""; String pv = ""; int j; for ( j = i; j < len && pattern.charAt(j) != spl; j++); if ( i != j ){ pn = pattern.substring(i, j); int k = pn.indexOf(SPLITER_EQUAL); pv = pn.substring(k + 1); if ( k > 0 ) pn = pn.substring(0, k); else pn = ""; } i = j + 1; //select id value String value = ""; if ( pn.isEmpty() ){ if ( count >= idNameValues.size() ) return false; value = idNameValues.get(count); int l = value.indexOf(SPLITER_EQUAL); if ( l >= 0 ) value = value.substring(l + 1); } else{ for ( j = idNameValues.size() - 1; j >= 0; j-- ){ value = idNameValues.get(j); if ( value.length() > pn.length() ){ if ( value.charAt(pn.length()) == SPLITER_EQUAL ){ if ( value.startsWith(pn) ){ value = value.substring(pn.length() + 1); break; } } } } } //match if ( pv.isEmpty() ){ if ( !value.isEmpty() ) return false; } else{ if ( !value.matches(pv) ){ return false; } } count++; }; return true; } private static void test5() { String pattern = "@TpMappingMode=(TM_NEITHER_TERMINATED_NOR_AVAILABLE_FOR_MAPPING|TM_TERMINATED_AND_AVAILABLE_FOR_MAPPING)@CTP=(|/e1=1)@LayerRate=(|LR_ETHERNET_VLAN|LR_IP|LR_MPLS)"; List<String> idNameValues = new ArrayList<String>(); idNameValues.add("TpMappingMode=TM_TERMINATED_AND_AVAILABLE_FOR_MAPPING"); idNameValues.add("CTP=/e1=1"); idNameValues.add("LayerRate="); if(MatchIdValues(idNameValues, pattern)) { System.out.println("MATCH? [YES]"); } else { System.out.println("MATCH? [NO]"); } idNameValues.set(1, "CTP="); if(MatchIdValues(idNameValues, pattern)) { System.out.println("MATCH? [YES]"); } else { System.out.println("MATCH? [NO]"); } } /** * @param args */ public static void main(String[] args) { test0(); // test1(); // test2(); // test3(); // test4(); // test5(); } }