首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 正則表達式提取固定格式文本:從 LVM 輸出中解析邏輯卷名稱

     編輯:程式設計疑難解答

輸入文本

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 1 closed/syncd N/A
hd6 paging 17 17 1 open/syncd N/A
...

需求

提取 LV NAME: hd5、LV NAME: hd6 等格式。

解決方案

String input = "..."; // 完整多行字符串
// 1. 統一換行符
input = input.replaceAll("\\r|\\n", "##");
// 2. 提取表頭第一列關鍵字 "LV NAME"
String header = input.replaceAll("(\\w+\\s+\\w+).+", "$1"); // "LV NAME"
// 3. 匹配每行第一列(數字字母組合)
Pattern p = Pattern.compile("##(\\w+?\\d+)");
Matcher m = p.matcher(input);
StringBuilder sb = new StringBuilder();
while (m.find()) {
    sb.append(header).append(": ").append(m.group(1)).append(", ");
}
if (sb.length() > 0) sb.setLength(sb.length()-2);
System.out.println(sb); // LV NAME: hd5, LV NAME: hd6, ...

關鍵正則解析

  • ##(\\w+?\\d+):匹配 ## 後的單詞字符(非貪婪)直到數字結尾,即每行第一列。
  • (\\w+\\s+\\w+):匹配表頭前兩個單詞 LV NAME。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved