所以我对regex非常陌生,我已经在我的项目中成功地使用了它,但只找到了一个特定的匹配项。
现在,我试图在html源代码中找到某个url模式的所有匹配项。
urls如下所示:
链接示例1:https://clips.twitch.tv/KindYummyCarrotPeteZaroll?tt_content=video_thumbnail
链接示例2:https://clips.twitch.tv/AmericanOilyMeerkatSaltBae?tt_content=video_thumbnail
我用下面的代码搜索链接:
MatchCollection matches = Regex.Matches(source, @"^(https://clips.twitch.tv/)+(.*?)+(video_thumbnail)$");
if (matches.Count <= 0)
{
MessageBox.Show(matches.Count.ToString() + " urls found");
}
else
{
MessageBox.Show(matches.Count.ToString() + " urls");
}
我第一次发现源字符串是错误的,所以我在下面的字符串中尝试了这个正则表达式:
string source = (" adsfgsdfg adsfg assdfg https://clips.twitch.tv/KindYummyCarrotPeteZaroll?tt_content=video_thumbnail dfgsdfgszdfg asdfg https://clips.twitch.tv/AmericanOilyMeerkatSaltBae?tt_content=video_thumbnailsadfgdf g");
我也尝试过这个正则表达式:
Regex.Matches(source, @"^(https://clips.twitch.tv/)+([a-z0-9A-Z]{1,100})+(\?)+(tt_content=video_thumbnail)$");
但结果始终是找到0个urls。
我做错了什么?
发布于 2018-06-08 03:31:14
您的正则表达式模式中有未转义的字符。.
有一个特殊的正则表达式用法,所以要表示实际的句号,它们前面必须有一个反斜杠。试试这个:
(https://clips\.twitch\.tv/)(?:(?!http).)*?(video_thumbnail)
还要注意,^和$没有了;如果包括它们,只有在整个字符串匹配的情况下才匹配。
https://stackoverflow.com/questions/50748866
复制相似问题