- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 youtube 数据 api 获取 youtube 播放列表的总持续时间。例如,我从 http://gdata.youtube.com/feeds/api/playlists/63F0C78739B09958 下载响应我的想法是遍历每个 <yt:duration='xxx'/>
出现的地方 xxx
是以秒为单位的每个视频持续时间,并将它们相加以获得总播放列表运行时间。
为了得到每一个,我使用 CAtlRegExp
使用以下字符串:
<yt:duration seconds='{[0-9]+}'/>
但是它只匹配第一次出现的事件,而不匹配其余的任何事件(引用下面粘贴的源代码,循环只迭代一次)。
我尝试了一些其他的正则表达式字符串,比如
(<yt:duration seconds='{[0-9]+}'/>)
(<yt:duration seconds='{[0-9]+}'/>)*
然而他们也没有工作(同样的原因)。
这是源代码的摘录,其中 for 循环只迭代一次,因为 mcDuration.m_uNumGroups
等于 1
:
//get video duration
CAtlRegExp<> reDurationFinder;
CAtlREMatchContext<> mcDuration;
REParseError status = reDurationFinder.Parse(_T("<yt:duration seconds='{[0-9]+}'/>"));
if ( status != REPARSE_ERROR_OK )
{
// Unexpected error.
return false;
}
if ( !reDurationFinder.Match(sFeed, &mcDuration) ) //i checked it with debug, sFeed contains full response from youtube data api
{
//cannot find video url
return false;
}
m_nLengthInSeconds = 0;
for ( UINT nGroupIndex = 0; nGroupIndex < mcDuration.m_uNumGroups; ++nGroupIndex )
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcDuration.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
m_nLengthInSeconds += _ttoi(CString(szStart, nLength));
}
我怎样才能制作CAtlRegExp
匹配 <yt:duration ...
的所有出现?
最佳答案
您将始终只有第一次(下一次)出现。要找到其他人,您需要使 Match
循环,直到找不到更多匹配项。
for(; ; )
{
CAtlREMatchContext<> MatchContext;
pszNextText = NULL;
if(!Expression.Match(pszText, &MatchContext, &pszNextText))
break;
// Here you process the found occurrence
pszText = pszNextText;
}
关于c++ - 使用 CAtlRegExp 匹配多个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14726567/
我创建了一个正则表达式来捕获 Microsoft Office 可执行文件,如下所示: .*(\\Microsoft Office\\Office)(\d){1,2}(\\)(WINWORD.EXE
我正在尝试使用 youtube 数据 api 获取 youtube 播放列表的总持续时间。例如,我从 http://gdata.youtube.com/feeds/api/playlists/63F0
精简版: 如何使用 CAtlRegExp 获得匹配 a@a.aaaa 但不匹配 a@a.aaaaa 的正则表达式? 长版: 我正在使用 CAtlRegExp http://msdn.microsoft
我需要能够在 C++ 中验证各种格式的国际电子邮件地址。我一直在网上找到许多答案,不要削减它,我找到了一个适合我的解决方案,我想我会与正在使用 ATL Server Library 的任何人分享。 一
我有一些代码使用 CAtlRegExp 来执行一些验证。在特定情况下,邮政编码(5 或 5-4 格式)。此外,我希望数据就是这样,所以我使用 anchor (^ 和 $)。当我使用无 anchor 表
我是一名优秀的程序员,十分优秀!