我想用一个符合规则的字符串中的记录填充一个对象。规则是如果它包含至少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 });
我想要实现:
问:我必须使用哪种模式?
答案 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,})
中输入“模式”字段。