Java中的正则表达式或字符串的足够子串

时间:2016-11-14 13:56:04

标签: java regex parsing

我有以下问题。我的程序中有一个输入:

08:47:29.3 X0        LAN          Static IP  192.168.219.1    255.255.255.128  0.0.0.0          1 Gbps Full Duplex                                              
08:47:31.7 X0        LAN          Static IP  192.168.219.1    255.255.255.128  0.0.0.0          1 Gbps Full Duplex 
08:47:38.9 X0        LAN          Static IP  192.168.219.1    255.255.255.128  0.0.0.0          1 Gbps Full Duplex                                              
08:47:40.3 X0        LAN          Static IP  192.168.219.1    255.255.255.128  0.0.0.0          1 Gbps Full Duplex                                             
08:47:43.6 X1        WAN          DHCP       172.22.4.192     255.255.255.0    172.22.4.1       1 Gbps Full Duplex    172.22.1.2   0.0.0.0        0.0.0.0    

每一行都被视为一个单独的字符串。什么是最好的子串化方法,甚至更好地使用正则表达式来存储变量中的一些值?

e.g:

Name= X0, Type= LAN, Mode= Static IP, IP= 192.168.219.1, Subnet=255.255.255.128, Speed: 1 Gbps Full Duplex

输入在“列”之间具有可变级别的空白,所以尽管使用正则表达式在两个或更多空格之后尝试获取任何内容是个好主意,但我无法获得所需的输出。 / p>

有没有人对如何做到这样的事情有任何想法?

3 个答案:

答案 0 :(得分:0)

没有正则表达式就是这样:line=line.split(" "); 正则表达式line.split(" {2,}");

现在您必须将第一个字符串拆分为仅获取名称

答案 1 :(得分:0)

您可以创建一种新类型的对象:

public class Information {
    private String name, type, mode, ip, subnet, speed;

    public Information(String line) {
        String[] parts = line.split("\\s+");
        this.name = parts[0];
        this.type = parts[1];
        this.mode = (parts[2] + " " + parts[3]);
        this.ip = parts[4];
        this.subnet = parts[5];
        this.speed = parts[7] + " " + parts[8] + " " + parts[9] + " " + parts[10];
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @return the type
     */
    public String getType() {
        return type;
    }

    /**
     * @return the mode
     */
    public String getMode() {
        return mode;
    }

    /**
     * @return the ip
     */
    public String getIp() {
        return ip;
    }

    /**
     * @return the subnet
     */
    public String getSubnet() {
        return subnet;
    }

    /**
     * @return the speed
     */
    public String getSpeed() {
        return speed;
    }

}

然后您创建的类包含信息。

答案 2 :(得分:0)

如果你想使用$scope.myJson = { 'plot': { 'styles': ['#yellow', 'red', 'blue'] }, 'scale-x': { 'values': ['white', 'red', 'pink'] }, 'type': 'bar', 'series': [{ 'text': 'Product History Color', 'values': [2, 6, 8] }] } ,你可以尝试这样的事情:

regexp