zoukankan      html  css  js  c++  java
  • 正则表达式系列

    前言:

    在日常项目开发中,正则的使用场景还是很多的,常见的使用场景:

    1、给当前的地址栏添加参数

    2、获取地址栏的参数

    3、验证表单格式:手机号验证、邮箱的验证、保留两位小数的值的验证等

    等等,学会正则,能极大的提高我们在项目开发中解决问题的效率。

    什么是正则表达式?

    正则表达式是记录文本规则的代码,或者说它是用来进行文本匹配的工具。

    学习正则表达式的规则:

    1、元字符(匹配字符)

      补充其他元字符:

        + :匹配重复1次或更多次

        * :匹配重复任意次

     例子:

    hi.*Lucy  

    规则描述:先匹配一个hi的单词,然后是任意个除了换行符以外的任意字符(*是匹配任意个,.是匹配除换行符以外的任意字符),最后匹配一个lucy的单词。

    ^d{5,12}$  

    规则描述:只能输入5到12位的数字(^匹配字符串的开头,$匹配字符串的结尾)

    2、字符转义

    查找元字符本身,需要加来取消字符的特殊意义。

    例如查找.、*、: .、*、\

    3、定义重复

    Windowsd+

    规则描述:匹配windows后面跟着1个或多个数字的字符串

    4、字符类(自定义匹配的字符)

    []匹配指定的字符

    例子:

    [.?!]  

    规则描述:匹配标点符合.或?或!

    [a-z0-9A-Z_]  

    规则描述:等同于w匹配字母、下划线、数字

    5、分歧条件(制定多个规则的表达式)

    | 分割多个规则

    例子:

    (0d{2})[- ]?d{8}|0d{2}[- ]?d{8}  

    规则描述:匹配(022)-87678883或022-87678883或02287678883或(022)87678883

    6、分组(一个规则重复匹配多次的定义方法)

    使用()包裹规则

    例子:

    一个简单的ip匹配规则

    (d{1,3}.){3}d{1,3}  

    正确ip匹配规则

    ((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)
    

    7、分组高级用法

      

       1、后向引用(这个名字取的都不好理解)

       用于重复搜索(重复匹配)前面某个分组匹配的文本

    (w+)s+1  

    规则描述:匹配例如:youyi youyi beier,结果为youyi youyi,1代表第一个组匹配的文本,从左到右以分组的左括号为标志,第一个出现的分组为1组,第二个为2组,以此类推。

       另外一种反向引用的写法  

    (?<Word>w+)s+k<Word>k<Word>
    

      规则描述:?<word>(或?'word')通过这种方式来给分组匹配到的文本定义一个别名,反向分组中可以通过k加<word>来引用前面分组中匹配到的文本

       2、断言

    ((?<=d)d{3})+  
    规则描述:123456789,匹配结果456789;1234567890,匹配结果234567890.

    8、反义

    <a[^>]+>

     规则描述:匹配用尖括号括起来的以a开头的字符串(不加这个规则[^>],会匹配不上例如:<a5456>这样的格式,我的理解是在匹配字符串时会 将最后的>当做一个字符串,而不是在匹配>)

    9、贪婪与懒惰(匹配最短的符合条件的字符串)

    a.*?b
    

     规则描述:aabab,匹配结果aab。  

    练习:

    1、给一个很长的数字中每三位间加一个逗号

    2、包含后面不是字母u的字母q的单词

    3、其他博主博客:https://2ue.github.io/2017/11/24/regex-to-something/

    参考学习资源:

    MDN: 正则表达式

    正则表达式30分钟入门教程:正则入门

    持续更进中...

  • 相关阅读:
    from __future__ import with_statement
    第六章 Flask数据库(二)
    python面向对象基础(四)内置方法 __xx__之new与init
    MySQL用户自定义变量
    iOS不得姐项目--appearance的妙用,再一次设置导航栏返回按钮,导航栏左右按钮的封装(巧用分类)
    iOS边练边学--NSURLSessionDataTask实现文件真正的断点续传
    iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态
    iOS边练边学--NSURLSession、NSURLSessionTask的介绍与使用以及url中包含了中文的处理方法
    iOS开发小技巧--边接受数据边写入文件的两种方法
    iOS边练边学--文件压缩和解压缩的第三方框架SSZipArchive的简单使用
  • 原文地址:https://www.cnblogs.com/yy95/p/9510705.html
Copyright © 2011-2022 走看看