iOS 正则表达式的简单使用介绍

本文详细介绍正则表达式的各种用法,包括基本符号、特殊字符及如何在Objective-C中应用正则表达式进行字符串匹配与转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    NSString *pattern = @"55555";             // 普通写法: 写什么, 就找什么
    NSString *pattern = @"5{5}";              // 功能性的字符: {5} 表示重复5
    NSString *pattern = @"5{3,7}";            // {3,7} 表示重复3~7, 会尽量找到最多的个数
    NSString *pattern = @"5+";                // + 表示至少有一个, 只要大于等于1就能匹配到结果, 尽量匹配多个结果
    NSString *pattern = @"1236+6+";           // 123固定, 6随意, +号只修改前一个字符
    NSString *pattern = @"(1236)+6+";         // () 表示优先级, 整体
    NSString *pattern = @"[136]+";            // [ ] 表示组合, 可以是其中的做任意一个
    NSString *pattern = @"[0123456789]+";     // [0123456789]表示任意整数
    NSString *pattern = @"[0-5]+";            //  [0-5]表示从05, [012345]一样
    NSString *pattern = @"[a-z]+";            // 表示az的所有小写字符
    NSString *pattern = @"^\\w";              // \w 表示字母, 汉字, 下划线, 数字
                                              // ^ 在没有[], 它表示匹配字符串的开始 (从第一个字符开始, 就必须是\w)
    NSString *pattern = @"[^\\w]";            // // \W 等价于 [^\w]
                                              // ^[]里面时, 表示取反, 所以表示获取一个并非是(数字, 字母, 下划线, 汉字)的字符
    NSString *pattern = @"[^abcxyz]";         // 表示非了abcxyz的任意一个
    NSString *pattern = @".com$";             // & 表示匹配到字符串结束
    NSString *pattern = @"^http://";          // 匹配必须以http:// 开头
    NSString *pattern = @"^科比$";             // 表示限定这个单词
       NSString *pattern = @"\\d{3,5}";             // 元字符(转义字符) \d在正则当中表示任意整数, \d 等价 [0-9],  注意: OC的字符串中, \不能直接写 所以要写成\\d

      匹配QQ号码 ——>  @"^[1-9]\\d{5,10}$"
      ? 表示可有可无
           匹配手机号码 —>   @"^(0|86)?1(([358][0-9])|(7[678])|4[57])\\d{8}$"

  1. 创建正则选项
           NSString *pattern = @"^[\\w+]";
  1. 处理错误
           NSError *error;
  1. 创建正则表达式
           NSRegularExpression *regular = [[NSRegularExpression alloc]initWithPattern:pattern options:0 error:&error];
  1. 查找第一个 ( 查找到一个符合的就结束 )
    NSTextCheckingResult *textCheckingResult = [regular firstMatchInString:content options:0 range:NSMakeRange(0, content.length)];
     // 匹配项的位置
    NSRange range = textCheckingResult.range;
     // 获取匹配项的字符
    NSLog(@"查找到第一个匹配: %@",[content substringWithRange:range]);

  1. 查找全部匹配项
       NSArray <NSTextCheckingResult *> *results = [regular matchesInString:content options:0 range:NSMakeRange(0, content.length)];

         // 遍历所有匹配项
       for (NSTextCheckingResult *result in results)
    {
       
NSLog(@"查找全部%@",[content substringWithRange:result.range]);
    }
========================将字符串转换为表情==========================
 // ————原文本
    NSString *content = self.lable.text;
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:content];
   
    // ————正则选项
    NSString *pattern = @"\\[\\w+\\]";
   
    // -----获取到所有匹配项
    NSArray *ranges = [content matchesRangeWithPattern:pattern];
   
    // --------遍历转换
    for (int i = 0; i < ranges.count; i++)
    {
        NSValue *value = ranges[ranges.count - i - 1];
       
        NSRange range = value.rangeValue;
       
        // -------获取图片
        UIImage *image = [UIImage imageNamed:[content substringWithRange:NSMakeRange(range.location + 1, range.length - 2)]];
       
        // ---------创建富文本附件
        LZTextAttachment *attachment = [[LZTextAttachment alloc]init];
        attachment.image = image;
        // --------创建图片符文本
        NSAttributedString *imageString = [NSAttributedString attributedStringWithAttachment:attachment];
       
        // --------替换
        [attributedString replaceCharactersInRange:range withAttributedString:imageString];
    }
     // 赋值
    self.lable.attributedText = attributedString;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值