美文网首页
使用正则筛选字符串

使用正则筛选字符串

作者: HH思無邪 | 来源:发表于2018-06-13 16:49 被阅读10次
匹配结果.png

1. 正则基础应用

voidtest1(){
    /**
     * 1.创建正则表达式
     * 1.1定义规则
     */
    // Pattern : 样式\规则

    //        NSString *pattern = @"ab7”;

    //\\u4e00-\\u9fa5 中文匹配

    // [] : 找到内部的某一个字符即可

    //        NSString *pattern = @"[0123456789]";

    //        NSString *pattern = @"[0-9]";

    //        NSString *pattern = @"[a-zA-Z0-9]";

    //        NSString *pattern = @"[0-9][0-9]";

    //        NSString *pattern = @"\\d\\d\\d";

    //        NSString *pattern = @"\\d{2,4}";

    //\\u4e00-\\u9fa5 中文匹配

    // ? + *

    // ? : 0个或者1个

    // + : 至少1个

    // * : 0个或者多个

    NSString*pattern=@"[0-9a-zA-Z]";

    NSRegularExpression*regex=[[NSRegularExpressionalloc]initWithPattern:pattern options:0error:nil];

    /**
     2.测试字符串
     *regex 正则表达式

     *userName 测试的字符串

     *range 测试范围

     */
    //被测试字符串

    NSString*userName=@"19712345678";

    NSArray*results = [regex matchesInString:userName options:0range:NSMakeRange(0, userName.length)];

    NSLog(@"--results个数--%ld", results.count);
}

2. //遍历所有字符串打印结果

NSString*str = @"#呵呵呵#[偷笑] [http://foo.com/blah_blah](http://foo.com/blah_blah)#解放军#//[http://foo.com/blah_blah](http://foo.com/blah_blah)@Ring花椰菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@崔西狮:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮 蹦米咋不揍他#哈哈哈# [http://foo.com/blah_blah](http://foo.com/blah_blah)";

    // #话题#的规则

    NSString*topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";

    // 表情

    NSString* expressionpattern=@"\\[[\\u4e00-\\u9fa5]+\\]";

    //@规则

    NSString* atcpattern=@"@[\\u4e00-\\u9fa5]+";

    // | 匹配多个条件,相当于or\或

    NSString*pattern=[NSStringstringWithFormat:@"%@|%@|%@",topicPattern,expressionpattern,atcpattern];

    NSRegularExpression*regex=[[NSRegularExpressionalloc]initWithPattern:pattern options:0error:nil];

    NSArray*results = [regex matchesInString:str options:0range:NSMakeRange(0, str.length)];

    //遍历匹配结果

    for(NSTextCheckingResult*result inresults){

        NSLog(@"%@ %@", NSStringFromRange(result.range), [str substringWithRange:result.range]);

}

3. RegexKitLite 框架强大的正则辅助框架

框架使用https://www.jianshu.com/p/e73ea78ba8f9

项目更改:

非ARC支持.png
添加字符串依赖库libicuco.png

4. 使用框架做事情

       NSString*str = @"#呵呵呵#[偷笑] [http://foo.com/blah_blah](http://foo.com/blah_blah)#解放军#//[http://foo.com/blah_blah](http://foo.com/blah_blah)@Ring花椰菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@崔西狮:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮 蹦米咋不揍他#哈哈哈# [http://foo.com/blah_blah](http://foo.com/blah_blah)";

        // #话题#的规则

        NSString*topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";

        // 表情

        NSString* expressionpattern=@"\\[[\\u4e00-\\u9fa5]+\\]";

        //@规则

        NSString* atcpattern=@"@[\\u4e00-\\u9fa5]+";

        // url链接的规则

        NSString*urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";

        // | 匹配多个条件,相当于or\或

        NSString*pattern=[NSStringstringWithFormat:@"%@|%@|%@|%@",topicPattern,expressionpattern,atcpattern,urlPattern];

        //简单打印

//        NSArray *results=[str componentsSeparatedByRegex:pattern];

//        NSLog(@"--results--%@", results);

        //遍历所有匹配结果

        [str enumerateStringsMatchedByRegex:pattern usingBlock:^(NSIntegercaptureCount, NSString*const__unsafe_unretained*capturedStrings, constNSRange*capturedRanges, volatileBOOL*conststop) {

            NSLog(@"%@ %@ ",*capturedStrings,NSStringFromRange(*capturedRanges));

        }];
        NSLog(@"-------------");
        // 以正则表达式为分隔符
[str enumerateStringsSeparatedByRegex:pattern usingBlock:^(NSIntegercaptureCount, NSString*const__unsafe_unretained*capturedStrings, constNSRange*capturedRanges, volatileBOOL*conststop) {

            NSLog(@"%@ %@", *capturedStrings, NSStringFromRange(*capturedRanges));
        }];

相关文章

  • 获取字符串中字母或者数字个数的两种便捷方法

    通过isnumber自带函数进行数字计数使用正则表达式进行字符串筛选计数 一、isnumber函数 获得字符串中的...

  • 使用正则筛选字符串

    1. 正则基础应用 2. //遍历所有字符串打印结果 3. RegexKitLite 框架强大的正则辅助框架...

  • 前端实现搜索排序

    筛选数组 filter函数,里面检测的是下面的函数 1 .正则 reg.test(str):正则匹配到对应字符串就...

  • 正则 表单验证

    正则 字符串替换 使用replace(regex,‘’) 括号里写以什么分割 字符串以叠词切割 运用正则分组() ...

  • 正则表达式

    创建正则表达式对象 使用正则进行匹配 test 检查某个字符串是否符合指定的正则 match 检查字符串里符合正则...

  • zabbix 过滤

    新建正则 根据情况选择,此正则表示,未包含字符串datastore的都为假. 使用正则 {#DATASTORE} ...

  • 学习笔记--正则表达式

    为什么使用正则表达式? 通过使用正则表达式,可以: 测试字符串内的模式。 例如,可以测试输入字符串,以查看字符串内...

  • js中的正则表达式传递变量

    首先我们可以使用字符串拼接,将变量拼接到一个正则的字符串中,也可以使用ES6的模板字符串,得到正则格式的字符串之后...

  • 正则的扩展

    字符串的正则方法 字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()...

  • python去除字符串中间空格的方法

    1、使用字符串函数replace 2、使用字符串函数split 3、使用正则表达式

网友评论

      本文标题:使用正则筛选字符串

      本文链接:https://www.haomeiwen.com/subject/kpajeftx.html