2015-04-24 34 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

相关问题