2014-01-24 85 views
2

我想結合幾個表達式來獲得每行3個不同的結果。C#結合正則表達式

例子: element\data\elements.data|44a0b61d1952973f52ad54cb911c0e3e|33095223

.*?element(?:(?!\|).)*檢索element\data\elements.data

(?<=\|)(.*?)(?=\|)檢索44a0b61d1952973f52ad54cb911c0e3e

(?<=\|)[0-9]*\r檢索33095223

但對我來說,得到這些我目前正在做的3個不同的正則表達式,我會喜歡把它限制在只有一個ge t我需要的3個結果並將它們設置爲不同的變量。

我一直看着做Dictionary但那些只允許2個變量,而我需要3

+0

表達式'a','b'和'c'分別與'a','b'和'c'匹配。你如何匹配'abc'? – Jon

+2

爲什麼不在'|'上做一個string.split? –

+0

@GrantWinney我究竟會如何實現這一目標? – tomirons

回答

7

你可以只拆分的垂直管:

var elements = string.Split('|'); 

結果字符串數組將包含:

  • 元件\數據\ elements.data
  • 44a0b61d1952973f52ad54cb911c0e3e
+0

+1 - 這不是一個正則表達式的工作。 –

+0

+1這工作完美,有沒有辦法將每個字符串數組設置爲一個變量?像'var file =「element \ data \ elements.data」','var hash = 44a0b61d1952973f52ad54cb911c0e3e'和'var bytes = 33095223' – tomirons

+2

@ Hulu8004 - > var file = elements [0]; //等等... –

0

對於有多個匹配的正則表達式,你應該看看add |你的表情之間。 然後這會返回所有匹配任何模式的結果,不區分哪個匹配的字符串。