1

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

Photos of Washington DC taken by Jane Doe

捕获组导致“照片”“华盛顿特区”和“简·多伊”的位置。其他可能性是:

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

Photos of Red Bud Dogs taken by Willa Shepherd:照片,红芽犬,威拉牧羊犬

这甚至可以使用 RegEx 吗?

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

4

1 回答 1

1

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

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

如果您不期望超过一个 of并且taken by 在您的输入中,您可以将所有更改.*?.*.

于 2013-09-23T10:28:33.743 回答