我需要使用.NET正則表達式來取消標記文件的<value>
標籤之間的一些值,比如這個(複製\粘貼節選):.NET正則表達式解析標記在某些部分重複的值而不是其他
<Title>Section1</Title>
<attributeArray><name>Name1</name><value>Value1</value></attributeArray>
<attributeArray><name>Name2</name><value>Value2</value></attributeArray>
<attributeArray><name>Name3</name><value>Value3</value></attributeArray>
<attributeArray><name>Name4</name><value>Value4</value></attributeArray>
<Title>Section2</Title>
<attributeArray><name>Name1</name><value>Value1</value></attributeArray>
<attributeArray><name>Name2</name><value>Value2</value></attributeArray>
<attributeArray><name>Name3</name><value>Value3</value></attributeArray>
<attributeArray><name>Name4</name><value>Value4</value></attributeArray>
</node>
實際內容包括6個部分。我遇到的問題是每個部分的所有標籤名稱都是相同的,我只需要從部分2中提取值(因此不包括1,3,4,5,6)。
我有這個掙扎了幾天,並嘗試了各種條件表達式這是新的我是這樣的:
(?(<node>Section2)(.*?<value>(?<Value>.*?)<\/value>.*?))
如果第2節,然後解析值鍵,但只提取第一個值 - 它不會遍歷標記的每個<value>
。而標記通常有大約10個我需要提取的值(在上面的示例中縮寫)。
這不是在代碼中完成的,所以我沒有使用XML解析器的自由。
任何建議將不勝感激 - 或者如果我可以進一步澄清讓我知道。
事後考慮 - 如果有一種方法可以將標題的文本與每個值匹配,那麼我可以解析所有6個部分,但後來我可以根據後面的部分篩選結果也可以工作。
例如:
match1
group1 = Section2
group2 = Value1
match2
group1 = Section2
group2 = Value2
match3
group1 = Section2
group2 = Value3
match4
group1 = Section2
group2 = Value4
謝謝!
什麼是最後的''和模式中的''元素?另外,你是否可以在解析數據時自由運行任何代碼? (如果是這樣,爲什麼不是XML解析器?我問,因爲你說你可以*過濾結果,但不能做其他事情) –
Kobi
@Kobi OP說XML解析器不是一個選項。 – NullUserException
@Null - 我知道,但OP也說「但我可以稍後根據我之後的部分篩選結果」。我感到好奇的是,OP可以運行* some *代碼,我對它的侷限性感興趣。通常,當你需要嚴格的正則表達式時,你沒有這個選項。 – Kobi