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 });

我想达到:

在此处输入图像描述

:我必须使用什么模式?

4

2 回答 2

1

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

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

您可以通过输入“源”字段然后输入“模式”字段来使用此正则表达式测试器进行尝试。Nume. . . . . . .Data nasterii. . . . .Nr. . . .([\w\s]*)([\. ]{3,})

于 2013-07-02T20:54:18.027 回答
1

在正则表达式中,.表示匹配任何字符。要匹配 a .,您需要将其转义为\.。要匹配表达式的 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
    });
}
于 2013-07-02T20:49:00.127 回答