외부에서 작동합니다. http://gskinner.com에서 sme가 성공적으로 실행되는 동안 패턴이 C# 코드에서 일치하지 않는 이유를 알고 싶습니다. 패턴은 다음과 같습니다Regex는 C#
^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$
가 나는 등
- http://www.youtube.com/watch?v=zcKEjSYJVLs&feature=topvideos_sports
- www.youtube.com/watch?v=KsH63qJlIMM
- http://www.youtube.com/watch?v=KsH63qJlIMM에게
I 시도를 일치시킬 C# -
YoutubeVideoRegex = new Regex(@"^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$", RegexOptions.IgnoreCase);
youtubeMatch = YoutubeVideoRegex.Match(url);
if (youtubeMatch.Success)
{
id = youtubeMatch.Groups[1].Value; // I want this
}
하지만 일치하지 않습니다. ? 어떤 도움을주십시오`
.NET 정규식에서 슬래시 ('/') 문자를 이스케이프 할 필요가 없습니다. 특수하지 않습니다 (JavaScript와 같은 다른 언어는 정규식 리터럴을 구분하여 이스케이프해야 함). – Richard
응답자 덕분에! 문자열이 http://www.youtube.com/watch?feature=player_detailpage&v=cQwNbSJgFbI 패턴과 일치하지 않는 경우 http://www.youtube.com/watch?v=cQwNbSJgFbI&feature=player_detailpage가 일치합니다. 이유가 뭐야? 나는 정규 표현가가 아니다. 그래서 pls 도움이됩니다. 위치 쿼리 문자열에 관계없이 id를 추출해야합니다. – Raman
식의 조각 ('? = [^?] * v = \ w +)'은'v ='로 시작하는 후속 부분 만 일치하도록합니다. 단어가 뒤따 랐다. 어떻게 (? =) 작동하는지에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/az24scfc.aspx#grouping_constructs를 검토하는 것이 좋습니다. – BlueMonkMN