2013-07-02 44 views
0

我想用匹配規則的字符串中的記錄填充對象。規則是,如果它至少包含3個點,並且右側有一個空格(". . . "),則將第一個文本提取到左側,我剛選擇的文本及其長度。正則表達式:從字符串中獲取匹配到對象中

string strdata = "Nume. . . . . . .Data nasterii. . . . .Nr. . . ."; 
Regex rgx = new Regex(". . . ");//At least 3 dots ". . . " 
foreach (Match match in rgx.Matches(strdata)) 
    lst.Add(new obj1{ Label = "?", Value = match.Groups[1].Value, Length = match.Groups[1].Length }); 

我想才達到:

enter image description here

Q:我有什麼模式來使用?

回答

1

您可以使用@"([\w\s]*)([\. ]{3,})"來實現我假設您嘗試做的事。

這個正則表達式會將文本分解成不同的組,並且在這些組中你將有文本值和句點。

您可以使用此Regex TesterNume. . . . . . .Data nasterii. . . . .Nr. . . .輸入到「Source」字段中,然後在([\w\s]*)([\. ]{3,})中輸入到「Pattern」字段中來嘗試。

+0

如果我在我的標籤(「Nume/Prenume ...。Data nasterii ...」)中有「/」,那麼我將不得不修改該模式,以便使用整個組。我將模式更改爲([\ w \ s /] *)([\。] {3,})並且工作正常。 – Misi

1

在正則表達式中,.表示匹配任意字符。要匹配.,您需要將其轉義爲\.。要匹配表達式的兩個或更多個實例,請使用{2,}

string strdata = "Nume. . . . . . .Data nasterii. . . . .Nr. . . ."; 
Regex rgx = new Regex(@"(.+?)(\.(\.){2,})");//At least 3 dots ". . . " 
foreach (Match match in rgx.Matches(strdata)) 
{ 
    lst.Add(new obj1 
    { 
     Label = match.Groups[1].Value, 
     Value = match.Groups[2].Value, 
     Length = match.Groups[2].Length 
    }); 
} 
+0

這個正則表達式似乎不工作? – RandomWebGuy

+0

@RandomWebGuy - 是的,我忘了第一組中的'?',並且正在查看組0和1而不是1和2.我最近的編輯應該可以工作。 – gilly3

+0

是的。這似乎更接近。但是,它看起來並不像捕捉正文中的所有時段?例如,第一組只顯示4個時期?然後下一個小組剩下文本的時間段。 – RandomWebGuy

相關問題