Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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
Iphone RegexKitLite如何在objective c中转换PHP正则表达式_Iphone_Objective C_Regex - Fatal编程技术网

Iphone RegexKitLite如何在objective c中转换PHP正则表达式

Iphone RegexKitLite如何在objective c中转换PHP正则表达式,iphone,objective-c,regex,Iphone,Objective C,Regex,我使用这个正则表达式在我的站点上搜索一个字符串中的imgsrc。 现在我不想用这个表达式在目标c中做同样的事情。如何使用RegexKitLite实现这一点? 这是我的表情 /<img.+src=[\'"]([^\'"]+)[\'"].*>/i //i @蒂姆·皮茨克 您的代码工作得很好,但例如,如果我尝试在这个字符串中搜索img <p><a href="http://www.nationalgeographic.it/popoli-culture/2011/08

我使用这个正则表达式在我的站点上搜索一个字符串中的imgsrc。 现在我不想用这个表达式在目标c中做同样的事情。如何使用RegexKitLite实现这一点? 这是我的表情

/<img.+src=[\'"]([^\'"]+)[\'"].*>/i
//i
@蒂姆·皮茨克

您的代码工作得很好,但例如,如果我尝试在这个字符串中搜索img

<p><a href="http://www.nationalgeographic.it/popoli-culture/2011/08/03/news/per_la_tomba_del_boia-443612/?rssimage"> <img src="http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg" width="140" align="left" hspace="10"></a>Scoperta in America del Sud la sepoltura pre-incaica di un uomo circondato da coltelli cerimoniali che secondo gli archeologi eseguiva sacrifici umani</p>
在美国的范围是公元前20世纪的第二个gli考古学家eseguiva牺牲的人类

我的数组中有以下结果:

matchArray: (
    "<img src=\"http://www.nationalgeographic.it/images/2011/07/29/115624013-20034abf-4d91-40fe-98ab-782f06a9854d.jpg\" width=\"140\" align=\"left\" hspace=\"10\">"
)
匹配数组:(
""
)

我如何修改你的正则表达式以只获取src标记的内容?非常感谢

分隔符让您感到厌烦。此外,您至少应该使用惰性量词。试试这个:

NSString *regexString = @"(?i)<img.+?src=['\"]([^'\"]+)['\"].*?>";
NSString*regexString=@“(i)”;
顺便说一句,当文件名包含引号时,这会中断。这对你有问题吗

一个更安全(并且能够很好地处理引号)的正则表达式

NSString*regexString=@“(?i)]*>”;

但是,现在匹配文件名将位于捕获组2中,而不是1中,因此您需要在匹配后修改使用该文件名的任何代码。

谢谢!您的代码可以正常工作,但我不想要src=标记的内容!我在我的问题中添加了一些信息!看,您需要访问第二个捕获组。我想您可以通过使用
capture:2L
参数来实现这一点。查看中的第14页。我很确定苹果不再接受使用RegexKitLite的应用程序,因为它使用了一个私有库(libicu),您现在应该使用NSRegularExpression,它使用相同的libicu库。
NSString *regexString = @"(?i)<img[^<>]+?src=(['\"])((?:(?!\\1).)+)\\1[^<>]*>";