正则表达式以匹配短语并创建捕获组

本文关键字:创建 短语 正则表达式 | 更新日期: 2023-09-27 18:32:20

我正在尝试创建一个正则表达式和C#模式,该模式将与以下短语匹配:

Photos of Washington DC taken by Jane Doe

其中捕获组生成"照片"华盛顿特区"和"简·多伊"。其他可能性是:

Videos of Austin taken by Ruby : 视频, 奥斯汀, 红宝石

Photos of Red Bud Dogs taken by Willa Shepherd :P霍托斯、红芽狗、威拉牧羊

这在正则表达式中甚至可能吗?

看来我被标记了...我有没有提到我不知道正则表达式?我试过:(Photo of).*?((?:[a-z][a-z]+))(Taken by)((?:[a-z][a-z]+))但失败了。

正则表达式以匹配短语并创建捕获组

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

matchResults = Regex.Match(subjectString, "^(.*?) of (.*?) taken by (.*)");
// matchResults.Groups[1].Value contains "Photos" etc.

如果不希望输入中有多个oftaken by,则可以将所有.*?更改为 .*