2011-09-06 65 views
-1

我需要從html頁面內容中獲取一些哈希變量值。它看起來像這樣:regexp objective-c。 html解析

//...html code... 
var somehash = '12d51e50f4'; 
//...html code... 

如何使用正則表達式或其他方式獲取引號中的值?

+0

沒有:d 我不知道如何使用正則表達式Objective-c :) –

+3

首先閱讀文檔以熟悉它,並給它一個誠實的嘗試。如果它不像你想要的那樣工作,就用你想出的東西來編輯你的問題。在這個網站上,有幾百個正則表達式的問題。 – Mat

+0

下面是你需要的鏈接:http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html –

回答

2

這是正則表達式,將匹配的代碼指定行和提取的哈希值到第一個捕獲組:

\bvar\s+somehash\s*=\s*'([0-9A-F]+)';

1

@Timur在提問這種類型的問題之前應該真正閱讀文檔。這就是說,這是做你所問的一種方法。您可能需要針對您的特定需求調整正則表達式。此代碼被編譯在一個命令行工具只能用Foundation框架鏈接:

int main (int argc, const char * argv[]) 
{ 
    @autoreleasepool { 
     NSString *html = @"<html>\n<head>\n<title>Test</title>\n</head>\n<body>var someHash = '123abc';</body></html>"; 
     NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"var someHash = '(\\w*)';" options:NSRegularExpressionCaseInsensitive error:NULL]; 
     NSTextCheckingResult *match = [regexp firstMatchInString:html options:0 range:NSMakeRange(0, html.length)]; 
     if (match) { 
      NSRange hashRange = [match rangeAtIndex:1]; 
      NSString *hashCode = [html substringWithRange:hashRange]; 
      NSLog(@"Hash Code is %@", hashCode); 
     } 
    } 
    return 0; 
} 

對於生產代碼,你將要檢查是否有錯誤。