regex正则表达式

  上大学的时候老师也讲过正则表达式,但是是一扫而过,我当时也是吓晕了,这种东西是正常人类看的懂的么?

  其实,正则表达式是看的懂的,但是写却实在很难写出来。

  今天看了这篇文章,结合例子非常生动http://deerchao.net/tutorials/regex/regex.htm,给我看下去的勇气,不过我只看到反义,接下去还是不敢看。。

  主要的内容是里面的

  1.元字符

  .      匹配除换行符以外的任意字符

  \w    匹配字母或数字或下划线或汉字

  \s    匹配任意的空白符

  \d    匹配数字

  \b    匹配单词的开始或结束

  ^     匹配字符串的开始

  $     匹配字符串的结束  (有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^$的意义就变成了匹配行的开始处和结束处。)

  2.字符转义

  如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你  应该使用\.\*。当然,要查找\本身,你也得用\\.

  例如:deerchao\.net匹配deerchao.netC:\\Windows匹配C:\Windows

  3.重复

  *  重复零次或更多次

  +  重复一次或更多次

  ?  重复零次或一次

  {n}  重复n次

  {n,}  重复n次或更多次

  {n,m}  重复n到m次

  4.分支条件

  5.分组

  但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组)

  如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

  6.集合

  集合就是上面那个式子中,中括号括中的范围。

  元字符定义了正则表达式最基本的语法,字符转义解决查询元字符的方式,而重复和分组则是帮助解决精简正则表达式,不用写一堆的元字符

  而分支条件说白了就是或||,下面的反义我也看了下,也还好。在下面我就晕了,以后再看吧。

  集合也是挺重要的,最典型的就是[a-z0-9A-Z_]这个了吧。

原文地址:https://www.cnblogs.com/clunyes/p/3026218.html