В Embedly есть отличный генератор регулярных выражений, с помощью которого можно проверить правильность URL-адресов служб (http://api.embed.ly/tools/generator).. Он генерирует регулярные выражения javascript, но, к сожалению, он не генерирует выражения регулярных выражений в c #. Насколько я знаю,C # использует то же определение регулярных выражений ECMA, и поэтому я должен иметь возможность использовать в C #
Так что я хотел бы добиться, это взять сгенерированное регулярное выражение с сайта embdly и просто вставить его в мой код на c #.
Регулярное выражение javascript будет выглядеть следующим образом:
/http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|youtu\.be\/.*|.*\.youtube\.com\/user\/.*#.*|.*\.youtube\.com\/.*#.*\/.*|picasaweb\.google\.com.*\/.*\/.*#.*|picasaweb\.google\.com.*\/lh\/photo\/.*|picasaweb\.google\.com.*\/.*\/.*)/i
и должно соответствовать URL-адресам:
http://picasaweb.google.com/westerek/LadakhDolinaMarkha?feat=featured#5497194022344000402 http://www.youtube.com/watch?v=GVDc1uXda6Y&feature=related
На данный момент у меня есть следующее:
Regex regex = new Regex(
"[/http:\\/\\/(.*youtube\\.com\\/watch.*|.*\\.youtube\\.com\\/"+
"v\\/.*|youtu\\.be\\/.*|.*\\.youtube\\.com\\/user\\/.*#.*|.*\\."+
"youtube\\.com\\/.*#.*\\/.*|picasaweb\\.google\\.com.*\\/.*\\/"+
".*#.*|picasaweb\\.google\\.com.*\\/lh\\/photo\\/.*|picasaweb"+
"\\.google\\.com.*\\/.*\\/.*)/i]",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
.. но это дает мне только частичные совпадения ..
РЕДАКТИРОВАТЬ: Решение: Просто вставьте выражение регулярного выражения embedly javascript в строку strEmbdlyRegex вследующий фрагмент.
string strEmbdlyRegex = @"/http:\/\/(.*youtube\.com\/watch.*|.*\.youtube\.com\/v\/.*|youtu\.be\/.*|.*\.youtube\.com\/user\/.*#.*|.*\.youtube\.com\/.*#.*\/.*)/i";
string strRegx = strEmbdlyRegex.Remove(0, 1);
strRegx = strRegx.Remove(strRegx.IndexOf("("), 1);
strRegx = strRegx.Remove(strRegx.LastIndexOf(")/i"), 3);
strRegx = strRegx + "]";
regex = new Regex(
strRegx,
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.ECMAScript
| RegexOptions.Compiled
);