RegEx匹配短语并创建捕获组

时间:2013-09-23 10:25:09

标签: c# regex

我正在尝试创建一个与以下短语匹配的RegEx和C#模式:

Photos of Washington DC taken by Jane Doe

捕获组导致“照片”“华盛顿特区”和“Jane Doe”。其他可能性是:

Videos of Austin taken by Ruby:视频,Austin,Ruby

Photos of Red Bud Dogs taken by Willa Shepherd:照片,Red Bud Dogs,Willa Shepherd

RegEx可以实现这一点吗?

看来我被标记了......我提到我不知道RegEx吗? 我尝试过:(Photo of).*?((?:[a-z][a-z]+))(Taken by)((?:[a-z][a-z]+))但失败了。

1 个答案:

答案 0 :(得分:1)

.*匹配任何字符串(换行符除外)。通过向其添加?.*?),您可以告诉正则表达式引擎匹配尽可能少的字符,这可能是正确的方法,因此{{1}的第一个实例}和of将用作预期子匹配的分隔符:

taken by

如果您的输入中不希望有多个matchResults = Regex.Match(subjectString, "^(.*?) of (.*?) taken by (.*)"); // matchResults.Groups[1].Value contains "Photos" etc. of,则可以将所有taken by更改为.*?