簡體   English   中英

在Groovy中解析鍵值映射字符串

[英]Parse key-value map string in groovy

我在groovy中使用unix shell .execute命令從對后端服務器(DSDB)的調用獲得了一些輸出。 它給我的是鍵值對的列表,其中每對鍵值由一行分隔,每對鍵對由冒號分隔。 我需要將每個“鍵值”對放入地圖中。 這是我收到的輸出:

Group Name:  groupName
       GID:  12345
      Type:  1
  Comments:
Visibility:  visibile1
Owner Name:  name1
Owner Number:  123
Manager Name:  manager1
Manager Number:  234
Environment:  dev
     State:  0

我需要在一個函數內獲取所有者名稱的值,並將其作為變量傳遞回去,並且我還需要在另一個函數中環境的值。 這將是兩個單獨的功能。

找不到能完成所有這些操作的正則表達式,但是有些常規修改了:

final data = """
Group Name:  groupName
       GID:  12345
      Type:  1
  Comments:
Visibility:  visibile1
Owner Name:  name1
Owner Number: 123
Manager Name: manager1
Manager Number: 234
Environment: dev
State: 0
"""

final a = (data =~ /\s*([^:]+):(.*)/) 
    .collect { [it[1], it[2].trim()] }
    .collectEntries()

assert a["Owner Name"] == "name1"
assert a["Environment"] == "dev"

Java模式默認情況下處於“單行模式”。 此正則表達式匹配用冒號分隔的鍵和值,並找到每行的匹配項。

然后, collect將匹配項映射為元組。 我也在濫用此步驟以從值中除去前導空格(“注釋”字段中沒有值)。

最后, collectEntries可用於將元組列表映射到單個映射中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM