簡體   English   中英

如何將正則表達式拆分為確切的單詞?

[英]How can I split a regex into exact words?

關於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()調用找到正確的Regex。

這里有人可以告訴我在我的情況下使用的正確正則表達式嗎?

如您所知,我對RegEx並不了解:)

為什么不按“ \\ r”分開?

並且您不需要正則表達式,只需使用標准字符串函數

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

您正在使用的正則表達式( \\[\\[+\\]\\] )將捕獲:文字[ s 2或更多,然后是2文字] s。

甲正則表達式溶液捕捉所有非[ 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();

輸出:

在此處輸入圖片說明

如果要獲取[[..]]塊,請進行匹配。

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

愛迪生

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM