正则获取一组数据

 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.oro.text.regex.Perl5Substitution;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.Util;

public
class regexUtils { private final static String regIp = "ip:([^,]+)"; /** * @param str * @param reg * @return * @throws MalformedPatternException */ public static DynamicArray<String> getHostData(String str, String reg) throws MalformedPatternException { DynamicArray<String> tempArray = new DynamicArray<String>(); List<MatchResult> match = new ArrayList<MatchResult>(); regexUtils.getMatchResults(match, str, reg); for (int i = 0; i < match.size(); i++) { String ip = match.get(i).group(1); tempArray.add(ip); } return tempArray; } /** * return match array * @param results * @param pageContent * @param regStr * @throws MalformedPatternException */ public static void getMatchResults(List<MatchResult> results, String pageContent, String regStr) throws MalformedPatternException { PatternCompiler compiler = new Perl5Compiler(); Pattern reg = compiler.compile(regStr, Perl5Compiler.CASE_INSENSITIVE_MASK); Perl5Matcher matcher = new Perl5Matcher(); Perl5Substitution substitution = new Perl5Substitution(); while (matcher.contains(pageContent, reg)) { substitution.setSubstitution(""); results.add(matcher.getMatch()); pageContent = Util.substitute(matcher, reg, substitution, pageContent); } } public static vodi main(String[] args){ String sourceData = "{172.16.134.134=SystemPerformanceEntity[ ip: 172.16.134.134, cpuUsage: 5.9%, memoryUsage: 28.555202535499337%, load: 0.99, diskUsage: {/sys/fs/cgroup=3%, /dev=4%, /run/shm=5%, /run=6%, /run/lock=7%}], 172.16.134.131=SystemPerformanceEntity[ ip: 172.16.134.131, cpuUsage: 5.0%, memoryUsage: 28.52202558918353%, load: 0.41, diskUsage: {/sys/fs/cgroup=0%, /dev=1%, /run/shm=1%, /run=1%, /run/lock=1%}]}"; DynamicArray<String> ips = regexUtils.getHostData(sourceData , regIp); System.out.println(ips); } }

动态数组类:

public class DynamicArray<AnyType> {
    private int size = 0;
    private AnyType theItem[] = null;

    public DynamicArray(AnyType a[]) {
        this.theItem = a;
        this.size = a.length;
    }

    public DynamicArray() {
    }

    public int getSize() {
        return this.size;
    }

    public AnyType get(int nIndex) {
        return this.theItem[nIndex];
    }

    public void Set(int nIndex, AnyType newElement) {
        this.theItem[nIndex] = newElement;
    }

    public void add(AnyType newVal) {
        AnyType old[] = this.theItem;

        this.theItem = (AnyType[]) new Object[size + 1];
        if (size != 0) {
            for (int i = 0; i < old.length; i++) {
                this.theItem[i] = old[i];
            }
        }
        this.theItem[this.size] = newVal;
        this.size++;
    }

    public static void main(String args[]) {
        DynamicArray<String> array = new DynamicArray<String>();
        array.add("1");
        array.add("2");
        array.add("3");
        array.add("a");
        array.add("b");
        array.add("c");
        for (int i = 0; i < array.size; i++) {
            System.out.println(array.get(i));
        }
    }
}
原文地址:https://www.cnblogs.com/cloudwind/p/2733788.html