在c#中使用正则表达式提取某些子字符串

时间:2018-05-22 14:15:00

标签: c# regex substring

我有一个单词,其中有一段说1.2.2some text后跟some other texts。我想得到这个部分。我创建了一个正则表达式来匹配部分和一些文本。

以下是我的代码:

var word = "1.2.3 area consent testing, sklfjsdlkf jdifgjds visjeflk area consent testing lsdajfgo idsjgosa jfikdjfl343 fjdsl45jl sfgjsoiaetj l area consent testing";
var lowerWord = "area consent testing".ToLower();
var textLower = @word.ToLower().ToString();
Dictionary<int, string> matchRegex = new Dictionary<int, string>();
matchRegex.Add(1, @"(^\d.+(?:\.\d+)*[ \t](" + lowerWord + "))"); 


foreach (var check in matchRegex)
{
    string AllowedChars = check.Value;
    Regex regex = new Regex(AllowedChars);
    var match = regex.Match(textLower);
    if (match.Success)
    {
        var sectionVal = match.Value;
    }
}

现在我的问题是,我只想在我的1.2.3 area consent testing变量中使用值sectionVal,但是它给了我整条线。 即

sectionVal = "1.2.3 area consent testing, sklfjsdlkf jdifgjds visjeflk area consent testing lsdajfgo idsjgosa jfikdjfl343 fjdsl45jl sfgjsoiaetj l area consent testing";

1 个答案:

答案 0 :(得分:2)

你的正则表达式的开头包含一个未转义的.,它将匹配任何字符,然后匹配+。试试这个:

@"^(\d+(\.\d+)*[ \t](" + lowerWord + "))"