正则表达式入门
正则表达式入门
正则表达式可以看作是文本处理中“查找/替换"的领域专用语言(Domain Specific Language,DSL),在信息安全专业课中有很多应用,比如数据安全验证、Web安全中的SQL注入防范、XSS攻击防范等。
正则表达式可以看作是种元知识,掌握了正则表达式,可以举一反三。在学习Vim,Grep,Java,Python,Ruby,Perl...时,看书学习时都可以省去正则表达式这一章。
在准备这篇博客时,范飞龙博士(博客,微博)推荐了正则表达式30分钟入门教程,看了一下内容,正是想要写的,我就不重新发明轮子了。
正则表达式30分钟入门教程的目录如下:
- 本文目标
- 如何使用本教程
- 正则表达式到底是什么东西?
- 入门
- 测试正则表达式
- 元字符
- 字符转义
- 重复
- 字符类
- 分枝条件
- 反义
- 分组
- 后向引用
- 零宽断言
- 负向零宽断言
- 注释
- 贪婪与懒惰
- 处理选项
- 平衡组/递归匹配
- 还有些什么东西没提到
- ...
按照我“从薄到厚,再从厚到薄”的读书方法,最后一定要有单页的cheatsheet或refcard出来。正则表达的cheatsheet可以从这里下载。其他cheatsheet列表:
工具列表
- awk
- grep
- []RegexTester(http://deerchao.net/tools/regex_tester/index.htm)
- Regex buddy
- regexpal
- Regular Expression Tester(C#)
- Regular Expression Tester(Firefox插件)
- Regular Expression Tester(Perl)
- Regular Expression Tester(PHP)
- sed
- vim
- wingrep
- ...
实践
正则表达式易学难精,学习最好的方法就是实践,实践,再实践
可以使用上面推荐的工具学习,也可以到实验楼中使用grep测试。
常用正则表达式
- 网址(URL) :[a-zA-z]+://[^\s]*
- IP地址(IP Address): ((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
- 电子邮件(Email) :\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
- QQ号码:[1-9]\d
- HTML标记(包含内容或自闭合) :
<(.*)(.*)>.*<\/\1>|<(.*) \/>
- 密码(由数字/大写字母/小写字母/标点符号组成,四种都必有,8位以上) 😦?=^.{8,}
- 日期(年-月-日): (\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
- 日期(月/日/年) ((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
- 时间(小时:分钟, 24小时制) 😦(1|0?)[0-9]|2[0-3])😦[0-5][0-9])
- 汉字(字符): [\u4e00-\u9fa5]
- 中文及全角标点符号(字符) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
- 中国大陆固定电话号码 (\d{4}-|\d{3}-)?(\d{8}|\d{7})
- 中国大陆手机号码 1\d
- 中国大陆邮政编码 [1-9]\d
- 中国大陆身份证号(15位或18位) \d{15}(\d\d[0-9xX])?
- 非负整数(正整数或零) \d+
- 正整数 [0-9][1-9][0-9]
- 负整数 -[0-9][1-9][0-9]
- 整数 -?\d+
- 小数 (-?\d+)(.\d+)?
- 不包含abc的单词 \b((?!abc)\w)+\b
参考资料
- 学习正则表达式 (电子版,Introducing Regular Expressions)
- 正则表达式必知必会(Sams Teach Yourself Regular Expressions in 10 Minutes)
- 精通正则表达式 (Mastering regular expressions)
- 正则表达式经典实例(Regular Expression Cookbook)
欢迎关注“rocedu”微信公众号(手机上长按二维码)
做中教,做中学,实践中共同进步!
-
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
如果你觉得本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架