我正在尝试创建一个与以下短语匹配的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]+))
但失败了。
答案 0 :(得分:1)
.*
匹配任何字符串(换行符除外)。通过向其添加?
(.*?
),您可以告诉正则表达式引擎匹配尽可能少的字符,这可能是正确的方法,因此{{1}的第一个实例}和of
将用作预期子匹配的分隔符:
taken by
如果您的输入中不希望有多个matchResults = Regex.Match(subjectString, "^(.*?) of (.*?) taken by (.*)");
// matchResults.Groups[1].Value contains "Photos" etc.
和of
,则可以将所有taken by
更改为.*?
。