0

嗨,我试图从 Web 响应中删除 som HTML 字符串。我想删除<pre><a style="" name="output-line-1">1</a>,数字“1”的实例是否不同,但始终是数字。但是我如何编写删除它的正则表达式方法?以下是我到目前为止所得到的:

-(NSString *)stringByStrippingHTML:(NSString*)str
{
    NSRange r;
   while ((r = [str rangeOfString:@"/^<pre><a style=\"\"name=\"output-line-([0-9])\">([0-9])</a>"  options:NSRegularExpressionSearch]).location != NSNotFound){

        str = [str stringByReplacingCharactersInRange:r withString:@""];

    }
 }

基本上我想删除一个带有随机数的子字符串......在子字符串的某些情况下,1 被替换,以便任何类似的字符串得到确认,例如它可能是 output-line-999。我如何组合字符串的范围,以便我既可以描述字符串又可以指定查找具有任何数字的任何相似字符串?

我想同时删除 HTML 和数字。

4

2 回答 2

1

这个正则表达式应该可以工作:

[str rangeOfString:@"<pre><a style=\"\" name=\"output-line-[0-9]+\">[0-9]+</a>"  options:NSRegularExpressionSearch];

我认为问题在于您的 reg 表达式中的名称之前没有空格

于 2013-05-31T12:37:16.490 回答
0

使用原始的 while 循环,您可以:

-(NSString *)stringByStrippingHTML:(NSString*)str
{
    NSRange r;
    while ((r = [str rangeOfString:@"<pre><a style=\"\" name=\"output-line-[0-9]+\">[0-9]+</a>"  options:NSRegularExpressionSearch]).location != NSNotFound) 
    {
        str = [str stringByReplacingCharactersInRange:r withString:@""];
    }
 }

或者您可以使用NSRegularExpression

NSMutableString *input = ...

NSError *error;
NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"<pre><a style=\"\" name=\"output-line-[0-9]+\">[0-9]+</a>"
                                                  options:0
                                                    error:&error];
if (error)
{
    NSLog(@"error=%@",error);
    return;
}

[regex replaceMatchesInString:input
                      options:0
                        range:NSMakeRange(0, [input length])
                 withTemplate:@""];
于 2013-05-31T13:11:51.803 回答