正则表达式:从字符串到对象的匹配

时间:2013-07-02 20:28:48

标签: c# .net regex

我想用一个符合规则的字符串中的记录填充一个对象。规则是如果它包含至少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

:我必须使用哪种模式?

2 个答案:

答案 0 :(得分:1)

在正则表达式中,.表示匹配任何字符。要匹配.,您需要将其转义为\.。要匹配表达式的2个或更多实例,请使用{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
    });
}

答案 1 :(得分:1)

您可以使用@"([\w\s]*)([\. ]{3,})"来实现我的假设。

正则表达式会将文本分成不同的组,在这些组中,您将拥有文本值和句点。

您可以使用此Regex Tester尝试输入Nume. . . . . . .Data nasterii. . . . .Nr. . . .到“来源”字段,然后在([\w\s]*)([\. ]{3,})中输入“模式”字段。