[英]Regex: Match repeated groups with non repeated groups
我有一個Json字符串,我需要從C#中使用Regex提取一些數據。該字符串是這樣的:
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": [
{
"arrayKey1": 1,
"arrayKey2": "something",
"arrayKey3": "somethingelse"
},
{
"arrayKey1": 2,
"arrayKey2": "something2",
"arrayKey3": "somethingelse2"
},
{
"arrayKey1": 3,
"arrayKey2": "something3",
"arrayKey3": "somethingelse3"
}
],
"some very long text here": ""
"anotherKey": "value",
"keylast": "valuelast"
}
我想使用命名的組提取數組的值,我使用以下正則表達式完成了它(?:"arrayKey1": (?<arrayKey1>[^"]+),[\\n\\t ]+"arrayKey2": "(?<arrayKey2>[^"]+)",[\\n\\t ]+"arrayKey3": "(?<arrayKey3>[^"]+)")
這很好用,我得到每個匹配項,每個匹配項都有3組每個鍵。
現在,我想添加一個額外的匹配項,該匹配項僅包含我無法使用的“ anotherKey”的值,這是我嘗試過但無法使用的一些正則表達式:
(?:"arrayKey1": (?<arrayKey1>[^"]+),[\n\t ]+"arrayKey2": "(?<arrayKey2>[^"]+)",[\n\t ]+"arrayKey3": "(?<arrayKey3>[^"]+)")(?:[\s\S]*)(?:"anotherKey": "(?<anotherKey>[^"]+)")
這個確實獲得了“ anotherKey”,但是它只返回數組中的第一項,而不是全部。
另外: https : //regex101.com/r/mfXlRs/1
有人可以把我擺放正確嗎?
謝謝
您的arrayKey1..3
正則表達式(僅)給出了三個單獨的匹配項,在每個匹配項中,您都獲得了3個必需值。
現在,在添加片段以尋找anotherKey
,但在父級上,情況發生了變化。 現在你只有一個單一的比賽,這是因為:
arraykeys
。 (?:[\\s\\S]*)
將所有內容匹配到anotherKey
,包括剩下的兩組arraykeys
。 anotherKey
。 也許您應該通過2個單獨的步驟執行匹配:
anotherKey
。 將+
量詞添加到“舊”組將無濟於事,因為如果捕獲組被匹配多次,則該組將僅保留最后一個匹配項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.