Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有特定URL的正则表达式html脚本标记_Html_Objective C_Regex - Fatal编程技术网

带有特定URL的正则表达式html脚本标记

带有特定URL的正则表达式html脚本标记,html,objective-c,regex,Html,Objective C,Regex,我有一个带有标记的html内容。在那些标记中 有一个指向视频的url 我想要的是用我的特定标记替换这些html标记,这些标记使用以下模式:[VIDEO]my\u URL][VIDEO] 我正在使用hpple解析html内容 我正在使用这个xPath查询脚本 当解析器为我的查询找到结果时,我使用此函数提取视频url: NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink err

我有一个带有
标记的html内容。在那些
标记中 有一个指向视频的url

我想要的是用我的特定标记替换这些html标记,这些标记使用以下模式:[VIDEO]my\u URL][VIDEO]

我正在使用hpple解析html内容

我正在使用这个xPath查询脚本

当解析器为我的查询找到结果时,我使用此函数提取视频url:

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches         = [detector matchesInString:raw options:0 range:NSMakeRange(0, [raw length])];
NSString *finalUrl = [self urlMatchingRegexResults:matches withExtensionArray:[self videosExtensionsArray]];

if (finalUrl) {

        NSString *replacement = [NSString stringWithFormat:@"[%@]%@[/%@]",tag,finalUrl,tag];
        NSString *pattern = [NSString stringWithFormat:@"<script.*>.*%@.*</script>",finalUrl];

        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
        NSArray *matches = [regex matchesInString:self.store options:0 range:NSMakeRange(0, self.store.length)];
        modifiedString = [regex stringByReplacingMatchesInString: modifiedString options:0 range:NSMakeRange(0, modifiedString.length) withTemplate:replacement];
}
问题是,如果我的html内容中有多个标记,我的正则表达式将使用第一个开始标记和最后一个结束标记

如何修改正则表达式以避免此问题

NSString *pattern = [NSString stringWithFormat:@"<script.*>.*%@.*<\\/script>",finalUrl];
NSString*模式=[NSString stringWithFormat:@.*%.*],finalUrl];
编辑:

HTML的内容:

<html><body><p style="text-align: center;"><a href="http://www.tuxboard.com/nba-jam-avec-gerald-green/gerald-green-nba-jam/" rel="attachment wp-att-171429">[IMG]http://www.tuxboard.com/photos/2014/03/Gerald-Green-NBA-Jam.jpg[/IMG]
</a>
</p>
<p><span id="more-171399"/><br/>
Si le jeu <strong>NBA Jam</strong> était édité cette année, le joueur des Phoenix Suns <strong>Gerald Green</strong> serait la star en couverture. L’arrière des Suns est à la fois un immense dunkeur avec une <a href="http://www.tuxboard.com/la-detente-de-gerald-green/" target="_blank">détente phénoménale</a>, mais aussi une fine gâchette.</p>
<p style="text-align: center;"><a href="http://www.tuxboard.com/nba-jam-avec-gerald-green/video-nba-jam-gerald-green/" rel="attachment wp-att-171431">[IMG]http://www.tuxboard.com/photos/2014/03/Video-NBA-Jam-Gerald-Green.jpg[/IMG]
</a>
</p>
<p>L’équipe de Phoenix l’a intégré dans le jeu <strong>NBA Jam</strong>, suite à ses <a href="http://www.tuxboard.com/plus-lourde-defaite-de-lhistoire-des-lakers-et-duel-spurs-heat/" target="_blank">performances hors normes face au Thunder</a> avec notamment 41 pts.    </p>
<p>On vous laisse savourer cette vidéo, avec une jolie pépite à la fin (on n’en dit pas plus…)</p>
<div id="tuxplayer">Chargement du player …</div>
<p><script type="text/javascript"><![CDATA[jwplayer("tuxplayer").setup({ flashplayer: "http://medias.tuxboard.com/playerv2.swf", file: "http://medias2.tuxboard.com/NBA_Jam_Gerald_Green.mp4",image: "http://www.tuxboard.com/photos/2014/03/NBA-Jam-Gerald-Green-on-Fire-640x357.jpg", height: 370,width: '100%', 'plugins': 'sharing-3'});]]></script></p>
<p>
Les dernières actions du bonhomme qui devrait remporter le titre du joueur ayant le plus progressé !</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2014/03/Gerald-Green-Poster-Mason-Plumlee.gif[/IMG]
</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2013/11/Dunk-Gerald-Green.gif[/IMG]
</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2014/01/gerald-green-windmill.gif[/IMG]
</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/xnzQ3FWc7Oo?feature=oembed" frameborder="0" allowfullscreen=""/></p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/Yyr6mkAbCQw?feature=oembed" frameborder="0" allowfullscreen=""/></p>
<p>Et surement son plus beau dunk :</p>
<p style="text-align: center;">
</p><div id="Gerald">Chargement du player …</div>
<p><script type="text/javascript"><![CDATA[
jwplayer("Gerald").setup({ flashplayer: "http://medias.tuxboard.com/playerv2.swf", file: "http://medias2.tuxboard.com/Gerald_Green_Windmill_Alley-Oop.mp4",image: "http://www.tuxboard.com/photos/2012/03/Video-Gerald-GreenAlley-Oop.jpg", height: 390,width: 640, 'plugins': 'sharing-3'});]]></script></p>
</body></html>
<script.*?>.*http://medias2.tuxboard.com/NBA_Jam_Gerald_Green.mp4.*?</script>


斯勒朱NBA果酱太阳太阳报杰拉尔德·格林太阳之星之旅。太阳的到来是一个巨大的世界,是一个美好的世界

菲尼克斯国际篮球俱乐部NBA果酱,组曲不超过41分

在你的生活中,你可以享受到朱莉的美食(在n'en dit pas plus…)

玩家收费…

我们的行动是为了进步而进行的

[IMG]http://www.tuxboard.com/photos/2014/03/Gerald-Green-Poster-Mason-Plumlee.gif[/IMG]

[IMG]http://www.tuxboard.com/photos/2013/11/Dunk-Gerald-Green.gif[/IMG]

[IMG]http://www.tuxboard.com/photos/2014/01/gerald-green-windmill.gif[/IMG]

Et保证子加上beau dunk:

玩家收费…

模式日志:

<html><body><p style="text-align: center;"><a href="http://www.tuxboard.com/nba-jam-avec-gerald-green/gerald-green-nba-jam/" rel="attachment wp-att-171429">[IMG]http://www.tuxboard.com/photos/2014/03/Gerald-Green-NBA-Jam.jpg[/IMG]
</a>
</p>
<p><span id="more-171399"/><br/>
Si le jeu <strong>NBA Jam</strong> était édité cette année, le joueur des Phoenix Suns <strong>Gerald Green</strong> serait la star en couverture. L’arrière des Suns est à la fois un immense dunkeur avec une <a href="http://www.tuxboard.com/la-detente-de-gerald-green/" target="_blank">détente phénoménale</a>, mais aussi une fine gâchette.</p>
<p style="text-align: center;"><a href="http://www.tuxboard.com/nba-jam-avec-gerald-green/video-nba-jam-gerald-green/" rel="attachment wp-att-171431">[IMG]http://www.tuxboard.com/photos/2014/03/Video-NBA-Jam-Gerald-Green.jpg[/IMG]
</a>
</p>
<p>L’équipe de Phoenix l’a intégré dans le jeu <strong>NBA Jam</strong>, suite à ses <a href="http://www.tuxboard.com/plus-lourde-defaite-de-lhistoire-des-lakers-et-duel-spurs-heat/" target="_blank">performances hors normes face au Thunder</a> avec notamment 41 pts.    </p>
<p>On vous laisse savourer cette vidéo, avec une jolie pépite à la fin (on n’en dit pas plus…)</p>
<div id="tuxplayer">Chargement du player …</div>
<p><script type="text/javascript"><![CDATA[jwplayer("tuxplayer").setup({ flashplayer: "http://medias.tuxboard.com/playerv2.swf", file: "http://medias2.tuxboard.com/NBA_Jam_Gerald_Green.mp4",image: "http://www.tuxboard.com/photos/2014/03/NBA-Jam-Gerald-Green-on-Fire-640x357.jpg", height: 370,width: '100%', 'plugins': 'sharing-3'});]]></script></p>
<p>
Les dernières actions du bonhomme qui devrait remporter le titre du joueur ayant le plus progressé !</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2014/03/Gerald-Green-Poster-Mason-Plumlee.gif[/IMG]
</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2013/11/Dunk-Gerald-Green.gif[/IMG]
</p>
<p style="text-align: center;">[IMG]http://www.tuxboard.com/photos/2014/01/gerald-green-windmill.gif[/IMG]
</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/xnzQ3FWc7Oo?feature=oembed" frameborder="0" allowfullscreen=""/></p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/Yyr6mkAbCQw?feature=oembed" frameborder="0" allowfullscreen=""/></p>
<p>Et surement son plus beau dunk :</p>
<p style="text-align: center;">
</p><div id="Gerald">Chargement du player …</div>
<p><script type="text/javascript"><![CDATA[
jwplayer("Gerald").setup({ flashplayer: "http://medias.tuxboard.com/playerv2.swf", file: "http://medias2.tuxboard.com/Gerald_Green_Windmill_Alley-Oop.mp4",image: "http://www.tuxboard.com/photos/2012/03/Video-Gerald-GreenAlley-Oop.jpg", height: 390,width: 640, 'plugins': 'sharing-3'});]]></script></p>
</body></html>
<script.*?>.*http://medias2.tuxboard.com/NBA_Jam_Gerald_Green.mp4.*?</script>
*http://medias2.tuxboard.com/NBA_Jam_Gerald_Green.mp4.*?

匹配通常查找最长的匹配,您需要最短的匹配,最短的匹配由
*?
指示,用于最短的零或更多。请参阅苹果公司的“NSRegularExpression”文档中引用的内容。

如下:@“*?%.*?”?我看到您正在匹配“”,反斜杠是否应该存在?如果没有,请将原始HTML放入TextWrangler(或其他优秀的编辑器)中,并在其中构建RE。一旦它匹配您需要传输到代码的内容(如果需要,请翻译RE语法).我不明白…在正则表达式上似乎起作用,但在我执行代码时却不起作用…即使我删除了“\"从结束标记向您的问题添加一个HTML示例,其中包含您试图匹配的内容和
NSLog
ing
pattern
的结果,然后可能会有人发现剩余的问题如果您使用hpple并执行查询
//script
,那么您应该获得一个元素和一个元素数组,每个脚本标记对应一个如果要将RE应用于这些元素,则一次无法匹配多个脚本标记的内容。要使匹配跨越多个脚本标记,必须在完整的原始HTML上进行操作。即使如此,由于点不是默认的新行匹配,要跨越脚本标记,它们都需要位于同一行。(续…)