#objective-c #ios #regex #facebook #parsing
#objective-c #iOS #регулярное выражение #Facebook #синтаксический анализ
Вопрос:
Не могли бы вы помочь мне создать регулярное выражение? В большой строке мне нужно найти эти подстроки (2 формата):
http://www.facebook.com/profile.php?id=100002234024152amp;ref=ffa http://www.facebook.com/alesya.yuldasheva?ref=ffa
Я пробовал эти:
@"\b(https?)://www.facebook.com([.]{*})ref=ffa";
@"[{http://www.facebook.com}([.]{*}){ref=ffa}]";
@"[http://www.facebook.com]([.])*[ref=ffa]";
Я использую RegexKitLite, синтаксис которого такой же, как у обычных регулярных выражений objective c.
Комментарии:
1. вероятно, вам следует указать имя в адресе, поскольку оно ведет непосредственно на вашу или некоторые другие страницы facebook. что-то вроде ` facebook.com/xxxxxxx.xxxxxxxx?ref=ffa `
Ответ №1:
NSError *error = nil;
NSString *htmlAdr = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com"] encoding:NSUTF8StringEncoding error:amp;error];
if (error){
NSLog(@"Yaz");
}
// NSLog(@"%@", htmlAdr);
NSString *wereWeAreGoingToFind = htmlAdr;
NSString *whatWewAreGoingToFind1 = @"\bhttps?:\\/\\/[a-zA-Z0-9\-.]*\\/profile.php\?id=([\d]*)\amp;amp;ref=ffa";
NSString *whatWewAreGoingToFind = @"\bhttps?:\\/\\/[a-zA-Z0-9\-.]*\\/([a-zA-Z0-9\-.]*)\?ref=pb";
NSArray *matchArray = [wereWeAreGoingToFind componentsMatchedByRegex:whatWewAreGoingToFind capture:1L];
NSArray *matchArray1 = [wereWeAreGoingToFind componentsMatchedByRegex:whatWewAreGoingToFind1 capture:1L];
matchArray = [matchArray arrayByAddingObjectsFromArray:matchArray1];
NSLog(@"%@", matchArray);
Ответ №2:
Я не знаю objective-c, но это регулярное выражение — это то, что вам нужно:
b(https?)://www.facebook.com/(.*?)ref=ffab
Само собой разумеется, что вам нужно будет избежать косых черт самостоятельно
Комментарии:
1. Я знаю, что вы поступаете правильно. Я пытался сделать точно такой же, но obj c не имеет обычного синтаксиса (не как, например, perl)… Итак, я знаю, что мне нужно делать, но не знаю, как это сделать..
2. @user997822: глядя на документацию, синтаксис выглядит довольно стандартным.
Ответ №3:
Похоже, вам также нужно экранировать ‘.’ в URL. Например:
@»b(https?)://www.facebook.com /(.*?)ref=ffa»;