NSRegularExpression

简介: 提供一个网页版的JavaScript 调试工具,非常给力:http://www.renrousousuo.com/tools/regex_debug.

提供一个网页版的JavaScript 调试工具,非常给力:http://www.renrousousuo.com/tools/regex_debug.html
1: 如果在检索的文本中需要检索包含正则表达式的关键字,如 "[ ]" 那么在 拼装字符串时 需要加两个反斜杠(\\[)进行转义识别,否则会误判的
2: 在iOS中的正则表达式字符串  不需要左右侧加 / 

1:NSRegularExpression 案例一. 在HTML字符串中 找寻出完整的 <img> 标签.   包含  /> 和 </img> 结尾两种情况

NSError *error;
NSString *strRegex = @"<img([^<]+)(/>|</img>)";
NSRegularExpression *reg = [NSRegularExpression regularExpressionWithPattern:strRegex options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:&error];
//无视大小写.
NSArray *matches = [reg matchesInString:@"所要查找的字符串" options:NSMatchingCompleted range:NSMakeRange(0, [muStrHTMLContent length])];

for (NSTextCheckingResult *match in matches) {
        i++;
        NSRange range = [match range];
        NSLog(@"%d,%d,%@",range.location,range.length,[muStrCloneHTMLContent substringWithRange:range]);
}

2:NSRegularExpression 案例二. 对给定的字符串进行正则批量替换

NSError* error = NULL;
//(encoding=\")[^\"]+(\") 
//分成三段来理解
/*
     第一段:以某段字符做为起始 (encoding=\") 括号内为实际内容
     第二段:对于包含中的定义,参见正则.
     第三段:再以某段字符做为收尾 (\")
*/
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(encoding=\")[^\"]+(\")"
                                                                           options:0
                                                                           error:&error];
NSString* sample = @"<xml encoding=\"abc\"></xml><xml encoding=\"def\"></xml><xml encoding=\"ttt\"></xml>";
NSLog(@"Start:%@",sample);
//对给定的字符串进行正则批量替换. $1 表示 是否保留起始  $2 表示 是否保留收尾
NSString* result = [regex stringByReplacingMatchesInString:sample
                                                       options:0
                                                       range:NSMakeRange(0, sample.length)
                                                       withTemplate:@"$1余书懿$2"];
NSLog(@"Result:%@", result);

3:案例三: 补全 json 字符串中  没有 双引号的 key 

NSError* error = nil;
//(\\w+)(\\s*:\\s*)
NSRegularExpression* regex = [NSRegularExpression           
                              regularExpressionWithPattern:@"(\\w+)(\\s*:\\s*)" options:0  error:&error];
NSString* sample = @"{[{a:b,av:a},{a:a,s:a}]}";
NSLog(@"Start:%@",sample);
//对给定的字符串进行正则批量替换. $1  $2 表示检索到的部位 打印看结果
NSString* result = [regex stringByReplacingMatchesInString:sample
                                                   options:0
                                                     range:NSMakeRange(0, sample.length)
                                              withTemplate:@"\"$1\"$2"];
NSLog(@"Result:%@", result);


目录
相关文章
|
11月前
|
传感器 iOS开发 UED
探索iOS生态系统:从App Store优化到用户体验提升
本文旨在深入探讨iOS生态系统的多个方面,特别是如何通过App Store优化(ASO)和改进用户体验来提升应用的市场表现。不同于常规摘要仅概述文章内容的方式,我们将直接进入主题,首先介绍ASO的重要性及其对开发者的意义;接着分析当前iOS平台上用户行为的变化趋势以及这些变化如何影响应用程序的设计思路;最后提出几点实用建议帮助开发者更好地适应市场环境,增强自身竞争力。
|
11月前
|
设计模式 前端开发 Swift
探索iOS开发:从初级到高级的旅程
【10月更文挑战第28天】在这篇技术性文章中,我们将一起踏上一段探索iOS开发的旅程。无论你是刚入门的新手,还是希望提升技能的开发者,这篇文章都将为你提供宝贵的指导和灵感。我们将从基础概念开始,逐步深入到高级主题,如设计模式、性能优化等。通过阅读这篇文章,你将获得一个清晰的学习路径,帮助你在iOS开发领域不断成长。
191 2
|
12月前
|
人工智能
如何布局歌词结构:写歌词的技巧大公开,妙笔生词AI智能写歌词软件
在歌词创作中,结构布局如同建筑的骨架,决定歌词的稳固与美感。本文揭示了歌词结构布局的奥秘,从吸引人的开头、核心的中间部分到点睛的结尾,帮助你写出动人歌词。此外,推荐使用《妙笔生词智能写歌词软件》,其多种 AI 功能可助你一臂之力。
|
机器学习/深度学习 计算机视觉
【YOLOv8改进 - 注意力机制】DoubleAttention: 双重注意力机制,全局特征聚合和分配
YOLOv8专栏探讨了该目标检测模型的创新改进,如双重注意力块,它通过全局特征聚合和分配提升效率。该机制集成在ResNet-50中,在ImageNet上表现优于ResNet-152。文章提供了论文、代码链接及核心代码示例。更多实战案例与详细配置见相关CSDN博客链接。
|
C++ 容器
【C/C++笔记】迭代器
【C/C++笔记】迭代器
158 1
|
Java API 时序数据库
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
InfluxData【付诸实践 02】SpringBoot 集成时序数据库 InfluxDB 应用分享(InfluxDB实例+Feign接口调用InfluxDB API)源码分享
429 0
|
安全 网络安全 Python
【计算巢】防火墙技术:保护网络不受入侵的第一道防线
【5月更文挑战第31天】防火墙是网络安全的核心,防止未经授权的访问和攻击。它通过数据包过滤、状态检测和应用层网关等方式工作,阻止黑客入侵和病毒传播,限制内部网络对外部的不安全访问。然而,防火墙可能面临新型攻击的挑战,并不能完全防御内部威胁。Python 示例展示了数据包过滤规则的实现。有效的防火墙配置和管理至关重要,需随网络环境和安全需求变化而更新。防火墙需与其他安全技术结合,构建全面的网络安全体系。
234 0
|
存储 程序员 C++
C++系列十七:类与对象
C++系列十七:类与对象
|
前端开发 关系型数据库 MySQL
mysql数据库:数据库修改字段的长度是否会对程序产生影响?
mysql数据库:数据库修改字段的长度是否会对程序产生影响?
839 0