正则表达式学习笔记

前言

之前学习其他知识时,经常见到正则表达式,一开始不以为然,后来见得多了,觉得这东西肯定挺叼的,有必要学一学了,因此从网上找了一些资料开始学习,去google搜一下,教程倒是蛮多的,但是不知道哪个易学些,走马观花式的看了一段时间,基本掌握了,但是学的不系统,有一天到张子阳的一篇博文,觉得写的很好,就去看了看他的主页,发现子阳兄也写过正则表达式教程,怀着对子阳兄的崇敬之情,看的很带劲呢,一下午就看完了,感觉棒棒的。

正则表达式是什么

它是用来准确查找文本的,或返回查找结果,或进行内容替换;反过来,它可以对输入的信息进行格式验证。

正则表达式学什么

正则表达式可以当一个工具来学,基本的、常用的会用即可,不常用的学了也会忘掉,本着这个目的,我将从用途不同对正则表达式的知识进行分类。

简单匹配

匹配单个字符

重点学习“.”、“?”、“[ ]”、“\s”、“\d”、“\w”和“\”

  • “.”:匹配任意单个字符
  • “?”:匹配0个或1个特定字符(它的前一个字符)
  • “[ ]”:匹配几个字符中的一个字符
  • “\s”:匹配空字符,包括空格、Tab、回车符、换行符,相当于[\f\n\r\t\v]
  • “\d”:匹配单个数字,相当于[0-9]
  • “\w”:匹配单个大小写字母、数字、下划线,相当于[a-zA-Z0-9_]
  • “\”:转义字符,匹配有特殊意义的字符,如“.”或“?”

此外,\s\d\w的反义匹配是\S\D\W,也就是匹配非空字符、非数字字符和非【大小写字母、数字、下划线】字符

学会这些,基本的查找功能就可以搞定啦。

例子后续补充

中级匹配

匹配多个字符

重点学习“+”、“*”、“^”、“$”、“{ }”、“\b”

  • “+”:匹配1个或多个特定字符(它的前一个字符)
  • “*”:匹配0个或多个特定字符(它的前一个字符)
  • “^”:匹配文本首,用在“[ ]”中代表匹配反义词,如[^0-9]匹配非数字
  • “$”:匹配文本末
  • “{ }”:匹配指定数目的特定字符(它的前一个字符)
  • “\b”:匹配字符边界(分割单词的边界,下划线除外)
  • “\B”:与“\b”相反,匹配【非单词】边界(也就是字母或汉字)

例子后续补充

高级匹配

含有子模式和惰性模式的匹配

重点学习“( )”、“|”、“贪婪匹配与惰性匹配”

  • “( )”:将括号内的字符串当作一个整体来匹配,看作一个字符,如(good),文本中包含“good”时才匹配,“god”和“ood”都不会匹配到
  • “|”:“或”匹配,匹配两个正则表达式中的任意一个,如“good|bad”,匹配包含good或bad,也可以用在“( )”中
  • 贪婪匹配:默认匹配模式。它会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发现匹配的文本时,它不着急将该匹配保存到匹配集合中,而是对文本继续扩展,直到无法继续匹配 或者 扩展完整个字符串,然后将前面最后一个符合匹配的文本(也是最长的)保存起来到匹配集合中。所以说它是贪婪的。
  • 惰性匹配:它会匹配尽可能少的字符,它从第一个字符开始找起,一旦符合条件,立刻保存到匹配集合中,然后继续进行查找。所以说它是懒惰的。

下面是贪婪匹配与惰性匹配的字符差别:

例子后续补充

后记

这篇文章是我学习这篇教程的总结与思路整理,总结的也不太好,希望看到它的人可以从中学到,有什么问题欢迎讨论~

posted @ 2015-07-26 19:21  M-zyh  阅读(818)  评论(7编辑  收藏  举报