zoukankan      html  css  js  c++  java
  • 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_]这个了吧。

  • 相关阅读:
    根据索引删除数组内信息时导致程序崩溃
    C/C++判断字符串是否包含某个子字符串
    Qwidget布局操作之QGridLayout(网格布局)
    Qt获取文件路径、文件夹路径
    javascript DOM document属性
    javascript dom页面中的location属性
    javascript页面常用事件
    python的高阶函数式编程
    python set 集合复习--点滴
    python异常
  • 原文地址:https://www.cnblogs.com/clunyes/p/3026218.html
Copyright © 2011-2022 走看看