正则表达式(广为所知的“regex”)是一个字符串或一个字符序列来说明一种模式,把它作为一个搜索字符串-非常强大!
在一个文本编辑器或文字处理器中普通的旧式搜索只允许你进行简单的匹配。正则表达式可以实现这样简单的搜索,它还能让你更进一步地按模式搜索,例如,在两个数字后跟一个字母,或者,三个字母后跟一个连字符。
这种模式匹配能让你做更有用的事,如验证字段(电话号码,邮箱地址),检查用户输入,执行更高级的文本操作等等。
如果你渴望了解更多关于正则表达式在iOS中的用法,看一些本教程之外的内容--不需要有相关的经验。
在这篇NSRegularExpression教程中,你将实现一个在文本中按模式搜索的功能,用你希望的值替代那些匹配的值,验证你的输入信息,在文字块中找到并高亮显示复杂字符串。
此外,我还将给你提供一个NSRegularExpression Cheat Sheet PDF,你可以打印出来,在你开发过程中作为参考,Swift playground 包含了很多例子,你能用它试验出许多不同形式的正则表达式!实际上,所有正则表达式的例子都会出现在本教程中,用很生动的例子展现在playground中,一定要查看它们哦。
闲话少说,是时候来处理正则表达式了。
/The (Basics|Introduction)/
Note:如果你已经有正则表达式基础了,可以跳过头部,直接看Implementing Regex in iOS.
如果你是刚接触正则表达式,并且想知道所说的这些是什么意思,这是一个简短的定义:正则表达式提供了一种在指定文本文档中按指定模式进行搜索,并能基于匹配模式进行修改文本的一种方式。有许多关于正则表达式的有意思的书和教程--在本教程的结尾,你会看到一个简短的列表。
Regular Expressions Playground
在本教程中,你将会创建许多正则表达式,假使你想要可视化的使用它们,那么用Swift Playground 是一个绝佳的方式 !
这个starter project 包含了这个教程用到的playground。下载项目,在Xcode中运行并打开iRegex.playground.你也可以单独下载这个playground(download the playground) 。
Playground 顶部包含许多函数来高亮显示在一小段文本中应用正则表达式的搜索结果,展示了一系列的匹配项和分组,还有替换文本。目前不要担心这些方法的实现,之后你会再看到它们的,在Basic Examples和Cheat Sheet部分接着看这个例子。
在playground的侧边栏,你会看到每个例子的匹配结果。比如“highlight”这个例子,你可以把鼠标指针悬浮在结果上并点击“眼”或者空的圆圈图标来显示在文本中高亮的匹配内容。
你之后将学会如何创建NSRegularExpressions,现在你可以用这个playground来感受下不同的正则表达式是怎样工作的,也可以试验一下你自己的模式。在任一点上你都可以用Xcode中的EEditor > Reset Playground菜单按钮来重置你的改动。
Examples
让我们以一个小例子来展示正则表达式的样子。
这是一个来匹配单词“jump”的正则表达式的例子:
1