2015-04-24 55 views
0

我需要更多關於正則表達式的一點幫助在C#如何將正則表達式分割爲精確的單詞?

我有以下字符串

"[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r" 

該字符串還可以包含空格和理論上任何其它字符。所以我真的需要匹配[[words]]。

我需要的是一個文本數組這樣

"[[Sender.Name]]", 
"[[Sender.AdditionalInfo]]", 
"[[Sender.Street]]", 
// ... And so on. 

我敢肯定,這是完全可行的有:

var stringArray = Regex.Split(line, @"\[\[+\]\]") 

我只是太傻找到正確的Regex.Split()調用的正則表達式。

任何人都可以告訴我在我的情況下使用正確的正則表達式嗎?

正如你可以告訴我不與正則表達式:)

+3

只是根據'\ r'分裂。你能提供完整的預期產出嗎? –

+0

該字符串也可以包含空格和理論上的其他單詞。因此,我認爲尋找[[關鍵字]]並擺脫其餘部分會更理智。 – Mathew

+0

你不需要regex來做到這一點,只需使用[string.Split()](https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29的.aspx)。 – DGibbs

回答

1

做配套,如果你想獲得[[..]] BLO CK。

Regex rgx = new Regex(@"\[\[.*?\]\]"); 
foreach (Match m in rgx.Matches(input)) 
Console.WriteLine(m.Groups[0].Value); 

IDEONE

+0

RegEx做到了這一點。謝謝 ! :) – Mathew

6

你爲什麼不按「\ r」分裂經歷?

,你不需要正則表達式,僅僅使用標準的字符串函數

string[] delimiters = {@"\r"}; 
string[] split = line.Split(delimiters,StringSplitOptions.None); 
1

正則表達式使用的是(\[\[+\]\])將捕獲:字面[秒2以上,那麼2字面]秒。

甲正則表達式溶液捕捉所有非[ S的內部一倍[] S(和括號內的字符串不應該是空的,我想?),並流延到MatchCollection列表或陣列(這裏是一個例如,用列表):

var str = "[[Sender.Name]]\r[[Sender.AdditionalInfo]]\r[[Sender.Street]]\r[[Sender.ZipCode]] [[Sender.Location]]\r[[Sender.Country]]\r"; 
var rgx22 = new Regex(@"\[\[[^]]+?\]\]"); 
var res345 = rgx22.Matches(str).Cast<Match>().ToList(); 

輸出:

enter image description here

相關問題