[英]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.