java - 将特定输出解析为变量 Java

标签 java parsing

我正在尝试找到在 c7000 HP 机箱上连接和执行命令时解析 jsch 的特定输出的最佳方法。

到目前为止,我所做的是编写一个程序,该程序连接到 HP 机箱、执行命令、检索命令的输出并将其从流转换为字符串。

我最终得到这个字符串

Server Blade #1 Information:
    Type: Server Blade
    Manufacturer: HP
    Product Name: ProLiant BL280c G6
    Part Number: 507865-B21     
    System Board Spare Part Number: 531337-001
    Serial Number: XZ73616G9Z      
    UUID: 38926035-5636-5D43-3330-359274423959
    Server Name: SERVERONE
    Asset Tag: [Unknown]
    ROM Version: I25 02/01/2013

    CPU 1: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz (4 cores)
    CPU 2: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz (4 cores)
    Memory: 49152 MB

现在我需要从这个字符串中提取一些信息并将其放入一个/多个变量中。我尝试过使用正则表达式,但似乎没有破解它。我需要的是,例如,产品名称“Proliant BL280c G6”在我稍后可以使用的字符串变量中结束,序列号或其中的任何其他信息也是如此。我不需要的是前面的文本“类型:”或“部件号:”。我只需要提取之后的内容。

我对 Java 还很陌生,每天都在学习很多东西,这里有人能给我指出解决这个问题的最佳方法的正确方向吗?

编辑:非常感谢大家的快速回复。我现在对如何解决这个问题有了一些想法。最大的帮助是向我展示如何正确使用正则表达式。我错过的是排除不需要的弦乐片段的可能性。 (?<=产品名称:)。

最佳答案

String delims = "\n";   //this is the identifier of a line change in java
String[] lines = result.split(delims);  

for (int i=0;i<lines.length;i++)  
{  
        System.out.println(lines[i]);  
}  

此代码将保存(并打印)该字符串中的行(假设您发布的内容保存为 java 字符串)。

你有几种方法可以做到这一点。当然,它们将是更合理的方法(正则表达式、解析器……),但您可以这样做来检查字符串是否包含子字符串:

 str1.toLowerCase().contains(str2.toLowerCase())

例如,如果您想知道一行 lines[i] 是否包含单词 Product Name,只需这样做:

 subS = "Product Name";
 if (lines[x].toLowerCase().contains(subS.toLowerCase())); 
 //x being a number between 0 and the total of lines

如上所述,这是一种非常简单的方法,但它会起作用。

关于java - 将特定输出解析为变量 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477718/

相关文章:

python - 如何让 HTMLParser 在解析错误后继续解析?

java - 使用 SAX 和 Java 比较两个属性值

javascript - 用于检测 JavaScript 正则表达式的正则表达式

java - 线程 "main"java.lang.NoClassDefFoundError : 中的异常

java - 收集/计数到非空 Map 会抛出 ClassCastException

Java:访问枚举(enum)中的常量

php - 使用 PHP 浏览网站

java - JUnit ArrayList 为空

java - Java 程序抛出 CharConversionException?

c++ - 如何将数字转换为整数 vector ?