java解析器文件文本

java解析器文件文本,java,mysql,parsing,Java,Mysql,Parsing,我有这个文本文件,我想解析并将其放入mysql数据库: A:PE9301_P# show port 1/1/1 =============================================================================== Ethernet Interface =============================================================================== Descriptio

我有这个文本文件,我想解析并将其放入mysql数据库:

    A:PE9301_P# show port 1/1/1 
===============================================================================
Ethernet Interface
===============================================================================
Description        : PE9301_P:PE9148_P:01:10G
Interface          : 1/1/1                      Oper Speed       : 10 Gbps
Link-level         : Ethernet                   Config Speed     : N/A
Admin State        : up                         Oper Duplex      : full
Oper State         : up - Active in LAG 1       Config Duplex    : N/A
Physical Link      : Yes                        MTU              : 9212
Single Fiber Mode  : No                         Min Frame Length : 64 Bytes
我只想要这些信息: PE9301,向上-滞后1激活
我找不到解决方案帮助mz plz使用以下正则表达式:

/Description\s+:\s([\w\s]+)/g

如果要解析整个结构,请使用字符长度而不是正则表达式将结构拆分为键值数组,并将键与常量(“描述”、“操作状态”等)进行比较

作为Java测试单元的工作示例:

private static final String NIFSOURCE = "A:PE9301_P# show port 1/1/1\r\n"+
        "===============================================================================\r\n"+
        "Ethernet Interface\r\n"+
        "===============================================================================\r\n"+
        "Description        : PE9301_P:PE9148_P:01:10G\r\n"+
        "Interface          : 1/1/1                      Oper Speed       : 10 Gbps\r\n"+
        "Link-level         : Ethernet                   Config Speed     : N/A\r\n"+
        "Admin State        : up                         Oper Duplex      : full\r\n"+
        "Oper State         : up - Active in LAG 1       Config Duplex    : N/A\r\n"+
        "Physical Link      : Yes                        MTU              : 9212\r\n"+
        "Single Fiber Mode  : No                         Min Frame Length : 64 Bytes";

/**
 * Ceci est un test que l'ont peut remplacer par une méthode Main ou une function 
 *                                                             - Uncle Bob Martin
 */
@Test
public void NIFParseTest() {
    String NIFdescription = null, NIFstate = null;

    Pattern motifRE = Pattern.compile("^Description\\s+:\\s(\\w+)", Pattern.MULTILINE);
    Pattern stateRE = Pattern.compile("^Oper State\\s+:\\s(.{26,26})", Pattern.MULTILINE | Pattern.UNIX_LINES);

    Matcher foundMatch = motifRE.matcher(NIFSOURCE);
    if (foundMatch.find()) {
        NIFdescription = foundMatch.group(1); //0 est la chaine complète, les motifs entre parenthèse sont disponibles à l'index 1
    }

    foundMatch = stateRE.matcher(NIFSOURCE);
    if (foundMatch.find()) {
        NIFstate = foundMatch.group(1);
    }
    assertNotNull(NIFdescription);
    assertNotNull(NIFstate);
} 

你能至少告诉我们你想要什么样的桌子结构吗?我认为你的问题的完整答案有点太宽泛了。看起来像是大量使用了
String.split
和一些正则表达式。我没有创建我的表,但我正在搜索如何在没有Separator的情况下解析。我不明白你的答案。你能给我举个例子吗?plzI刚刚为你做的
private static final String NIFSOURCE = "A:PE9301_P# show port 1/1/1\r\n"+
        "===============================================================================\r\n"+
        "Ethernet Interface\r\n"+
        "===============================================================================\r\n"+
        "Description        : PE9301_P:PE9148_P:01:10G\r\n"+
        "Interface          : 1/1/1                      Oper Speed       : 10 Gbps\r\n"+
        "Link-level         : Ethernet                   Config Speed     : N/A\r\n"+
        "Admin State        : up                         Oper Duplex      : full\r\n"+
        "Oper State         : up - Active in LAG 1       Config Duplex    : N/A\r\n"+
        "Physical Link      : Yes                        MTU              : 9212\r\n"+
        "Single Fiber Mode  : No                         Min Frame Length : 64 Bytes";

/**
 * Ceci est un test que l'ont peut remplacer par une méthode Main ou une function 
 *                                                             - Uncle Bob Martin
 */
@Test
public void NIFParseTest() {
    String NIFdescription = null, NIFstate = null;

    Pattern motifRE = Pattern.compile("^Description\\s+:\\s(\\w+)", Pattern.MULTILINE);
    Pattern stateRE = Pattern.compile("^Oper State\\s+:\\s(.{26,26})", Pattern.MULTILINE | Pattern.UNIX_LINES);

    Matcher foundMatch = motifRE.matcher(NIFSOURCE);
    if (foundMatch.find()) {
        NIFdescription = foundMatch.group(1); //0 est la chaine complète, les motifs entre parenthèse sont disponibles à l'index 1
    }

    foundMatch = stateRE.matcher(NIFSOURCE);
    if (foundMatch.find()) {
        NIFstate = foundMatch.group(1);
    }
    assertNotNull(NIFdescription);
    assertNotNull(NIFstate);
}