1

NSRegularExpression を使用して、HTML で 40 文字の ID の出現箇所を見つけます

ここに私のコード:

 - (NSString *)stripOutHttp:(NSString *)string {

NSLog(@"the page content :: %@", string);

// Setup an NSError object to catch any failures
NSError *error = NULL;

// create the NSRegularExpression object and initialize it with a pattern
// the pattern will match any http or https url, with option case insensitive

//search for:: <input type="hidden" name="XID" value="f3f3fbafe552358d9312d1fe30670add09adc36c" />


NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<input type=\"hidden\" name=\"XID\" value\"?" options:NSRegularExpressionCaseInsensitive error:&error]; // ultimo funcional



// try /\b([a-f0-9]{40})\b/


// create an NSRange object using our regex object for the first match in the string 

NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:string options:0 range:NSMakeRange(0, [string length])];

// check that our NSRange object is not equal to range of NSNotFound

if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
    // Since we know that we found a match, get the substring from the parent string by using our NSRange object

    NSString *substringForFirstMatch = [string substringWithRange:rangeOfFirstMatch];

    NSLog(@"Extracted data : %@",substringForFirstMatch);

    // return the matching string
    return substringForFirstMatch;
}

return NULL;
  }

だから私の現在の正規表現で:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<input type=\"hidden\" name=\"XID\" value\"?" options:NSRegularExpressionCaseInsensitive error:&error]; // ultimo funcional

必要なものの一部を取得します:

Extracted data : <input type="hidden" name="XID" value

40文字の値に対する応答を取得するにはどうすればよいですか?

私は試してみました

// try /\b([a-f0-9]{40})\b/

でも、まだ使い方がよくわかっていないようで、

これは、次のような応答です::

<input type="hidden" name="XID" value="f3f3fbafe552358d9312d1fe30670add09adc36c" />

どうもありがとう

4

2 に答える 2

2

(Blenderが言ったように)htmlまたはxmlパーサーで全体を解析することを検討する必要がありますが、今のところ、質問に対する答えは次のとおりです。

 "<[^>]*id=DIVNAME.*?>(.*?)/>"
于 2012-12-19T08:19:39.077 に答える
1

正規表現

 <input type=\"hidden\" name=\"XID\" value=\"([a-f0-9]{40})\"[\s]*/>

入力文字列と一致する必要があります

私はそれが最善の考えではないと思いますが、一つには、任意の空白も可能である多くのスペースを使用します。もし私があなたなら、htmlパーサーライブラリを調べます。

于 2012-12-19T08:24:29.373 に答える