У меня есть следующие C# RegexНе совпадают адреса YouTube с начала двойные кавычки - C# Regex
@"(?:https?:\/\/)?(?:www\.)?(?:(?:(?:youtube\.com\/watch\?[^?]*v=|youtu\.be\/)))([\w-]+)";
Как я могу это исправить, так что регулярное выражение не будет соответствовать URL-адреса с кавычками в начале URL , поэтому, если URL-адрес находится в атрибуте href
в гиперссылке, он будет проигнорирован и не будет записан.
Я использовал это выражение в своем другом шаблоне Regex Twitter, но я не могу заставить его работать в этом.
(?<!"")
Он работал по образцу Twitter:
(?<!"")https?://twitter\.com/(?:#!/)?(\w+)/status(?:es)?/(\d+)
Так YouTube Regex должен захватить только URL-адрес, которые не являются двойными кавычками в начале URL.
См. [Это демо] (http://regexstorm.net/tester?p=%28%3f%3c!%22%5b%5e%22%3c%3e%5d*%29%28%3f% 3ahttps% 3f% 3a% 5c% 2f% 5c% 2f% 29% 3f% 28% 3f% 3awww% 5с.% 29% 3f% 28% 3f% 3a% 28% 3f% 3a% 28% 3f% 3ayoutube% 5с .com% 5c% 2fwatch% 5c% 3f% 5b% 5e% 3f% 5d * v% 3d% 7cyoutu% 5c.be% 5c% 2f% 29% 29% 29% 28% 5b% 5cw-% 5d% 2b% 29 & я =% 3c + HREF% 3d% 22http% 3a% 2f% 2fwww.youtube.com% 2fwatch% 3fv% 3dddd + HTTP% 3a% 2f% 2fwww.youtube.com% 2fwatch% 3fv% 3dddd% 22% 3e + HTTP % 3a% 2f% 2fwww.youtube.com% 2fwatch% 3fv% 3dddd). –
Используйте html-парсер для извлечения текстовых узлов раньше, таким образом вы избегаете всех атрибутов html. (и если вы используете запрос XPath, вы даже можете выбрать только текстовые узлы, содержащие строку «youtu») –
Собственно, если вам просто нужно * извлечь * ссылки из * обычного текста *, вам лучше сделать это с помощью HtmlAgilityPack : 'public string getCleanHtml (строка html) { var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml (html); return HtmlAgilityPack.HtmlEntity.DeEntitize (doc.DocumentNode.InnerText); } ' –