我的iOS开发小屋iOS Swift && Objective-C

【图片+例子】学习正则表达式

2017-10-24  本文已影响176人  Lefe

【 通过例子学习正则表达式 Day1 】

【例一】找出以 lefelefe_x 单词开头,以 wsy 结尾的字符串。比如:lefe name is wsy 是合法的,而 lef name is wsy 是非法的。
【正则表达式为】
"(^(?:lefe|lefe_x)\b.{0,}wsy$)"

4.jpg

【 知识点 】

【 通过例子学习正则表达式 Day2 】

正则表达式对于每一种语言来说都十分重要,然而很多同学可能仍然停留在复制粘贴中。其实学好正则表达式有时非常必要,起码可以阅读它,更好的情况是能够书写它。本文主要通过【例子+图片】的方式来学习它,旨在能够让每位朋友更轻松的学习,在几天的学习结束后会给大家一个总结。

【例子2】匹配以 lefe 开头,lefe 后面不能紧跟_x,后面由数字,-,_和字母组成,且不包含l,e,f 三个字母中的任意一个(至少一位),且为最短的用户名。

【分析】
根据要求可以把题目拆分成:
1.以 lefe 开头,不能为 lefe_x。可以转换成 ^lefe(?!_x);
2.中间部分由数字,-,_和字母组成,不能包含 l,e,f,至少一位。可以转换成 [0-9a-dg-km-zA-DG-KM-Z_-]+;
3.匹配最短的。在正则表达式中用到了贪婪与非贪婪的概念,使用 ?;

【正则表达式】
'^(lefe(?!x)(?:[0-9a-dg-km-zA-DG-KM-Z-]+?))'

2.png

【知识点】

【 通过例子学习正则表达式 Day3 】

【例3】匹配由数字和字母组成的 6-16 位字符串。
【分析】

3.png

【解析】
?!在【例2】中已说明,(?![0-9]+$) 不能为纯数字,(?![a-zA-Z]+$) 不能纯字母。

【例4】匹配 html 标签,比如 <body>Hello lefe</body>。
【分析】
html 标签为成对出现的,比如<body></body>,<title><title>
【正则表达式】
^<([a-z]+)>.*<\/\1>

1.png
【知识点】
\数字:表示引用分组,\1 表示匹配分组1

【 通过例子学习正则表达式 最后一天 】

如果你跟着前3天的学习,基本上已经掌握了正则表达式,不过需要多加练习,这样会理解更加深刻。前几天的例子都是通过 Python 验证的,在 iOS 中正则表达式的实现可能与 Python 有少许不同。今天主要总结各个字符代表的含义:

最后给大家推荐一个 可视化正则表达式网站

推荐阅读

【iOS 国际化】如何把国际化时需要3天的工作量缩减到10分钟

===== 我是有底线的 ======
喜欢我的文章,欢迎关注我的新浪微博 Lefe_x,我会不定期的分享一些开发技巧

上一篇 下一篇

猜你喜欢

热点阅读