正则匹配是使用正则表达式匹配字符串的一种方法;在脚本编写过程中,经常需要处理一些文本,而这些文本中可能只有部分信息是有用的,我们需要从文本中提取出这些有用信息;这时候,就需要编写特定格式的正则表达式,将文本中符合正则表达式的字符串抓取出来,然后对其进行分解、组合、替换等处理,得到符合需求的处理结果。

正则表达式十分灵活,这也使其具有强大的匹配能力,熟练的编写正则表达式,几乎可以匹配任何形式的字符串。因此,在脚本设计中,熟练地使用正则表达式,是一种十分重要的技能,可以有效的提高脚本的运行效率。

使用正则表达式需要借助两个重要工具:regexp 和 regsub,分别用于匹配和替换。

(注:regexp & regsub 的操作对象是字符文本,如果需要直接对文件进行处理,可以使用 sed & awk )

sed & awk 的用法参考这篇博文: sed & awk的用法

regexp

regexp 是用于判断正则表达式是否全部或者部分匹配目标字符串的命令,匹配返回 1,否则返回 0。

regexp 有两种用法,一种是仅匹配,另一种是匹配子串

第一种用法举例   regexp  {^([0-9]+[a-z]+|[A-Z]+[0-9]+)$}  123abc,这个正则表达式用于匹配“数字开头且小写字母结尾” 或者 “大写字母开头且数字结尾” 的表达式,所以返回值为 1

详细解释: ^ 匹配开头,$ 匹配结尾,中间的 | 表示 “或”, + 表示前面的字符出现一次或者多次

第二种用法子串匹配举例   regexp  {([0-9]+)\s([a-z]+)}  "there are 100 apples"   str01   sub01   sub02  ,这个正则表达式用于匹配“一个或多个数字加一个空格加一个或多个小写字母”,返回1

详细解释: 表达式中包括两个子串 ([0-9]+) 和 ([a-z]+),所以 str01="100 apples"    子串sub01=100    子串sub02=apples

regsub

regsub 是用于对目标字符串中满足正则表达式的部分进行替换,并将替换后的结果存入新的变量中,匹配成功返回 1,否则返回 0。

举例   regsub  {there}  “they live there lives”  their  x  , 正则表达式为 there ,匹配字符串中的单词 there,将其替换为 their,并将替换后的字符串存入变量 x, 返回 1,所以变量 x 的值就是  $x="they live their lives"

注意:  regsub 有个选项 -all,如果没有这个开这个选项,则只替换第一个匹配, 否则替换所有匹配到的目标

正则匹配与替换 regexp & regsub的更多相关文章

  1. PHP正则匹配与替换的简单例子

    PHP正则匹配与替换的简单例子,含一个匹配获取加租字体例子和一个匹配替换超链接的例子. 1.查找匹配 <b> 与 </b> 标签的内容: <?php $str = &qu ...

  2. php--phpstorm使用正则匹配批量替换

    1.首先勾选正则规则 如图勾选右侧的Match Case和Regex 2.编写正则规则:无须添加//左右分解符,直接写正则表达式,注意应该转义的部分,需要原封不动替换的部分加上括号 3.编写替换规则: ...

  3. JS 正则查找与替换

    JS正则查找与替换 一.前提/背景 今天遇到个问题,需要替换字符串中部分字符,这些字符相对整个字符串而言,与其他子字符串类似,无法单独提出:重要的是,该字符串是动态的生成的,就像我们日常看到的网页Ur ...

  4. REGEXP 正则的实现两个字符串组的匹配。(regexp)

    主要懂3个mysql的方法:replace[替换]   regexp[正则匹配]    concat[连接]   由于某些原因,有时候我们没有按照范式的设计准则而把一些属性放到同一个字符串字段中.比如 ...

  5. phpstorm 正则匹配删除注释行(替换注释行为空行)

    使用phpstorm 来编写php 和javascript 代码,感觉还是不错的,用得也很舒服. 遇到了一个需求,有时候在阅读框架源代码的时候 , 想过滤(删除)掉源代码中的注释行,如果手动逐行删除显 ...

  6. RegExp正则匹配模式汇总

    正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法.对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexO ...

  7. JavaScript——正则匹配、正则提取、正则替换

    正则匹配 // 匹配日期 var dateStr = '2015-10-10'; var reg = /^\d{4}-\d{1,2}-\d{1,2}$/ console.log(reg.test(da ...

  8. php中的正则函数主要有三个-正则匹配,正则替换

    php中变量的声明? 由于php声明变量的时候, 不支持使用 var关键字, 又不能直接写一个变量名字, 孤零零的放在那里, 所以, 在php中声明变量的方式, 同时也是给变量初始化的形式, 即: & ...

  9. 使用sublime 正则匹配替换大批量代码

    1,在使用Django框架时,导入之前没有使用框架完成的网页,这时会遇到静态文件地址不匹配的问题,需要大量修改. 研究了一下sublime编译器,大家都使用正则匹配替换 2,位置在查找--替换与匹配, ...

随机推荐

  1. php返回数组后处理(开户成功后弹窗提示)

    1. 在注册的时候,注册成功后经常会弹窗提示自己注册的信息,这类做法需要返回mysql数据库中获取的数组值,返回给前台页面,赋值给弹窗. 2.做法: 返回数组 打印的数组的值 返回数组处理 赋值给弹窗 ...

  2. 不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2515 如果我们不做什 ...

  3. CSS中width和height与盒子模型的关系

    盒子模型 css中盒子模型包含属性margin.border.padding.width与height,他们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以 ...

  4. 在AE二次开发中出“正试图在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。”异常解决方案

    今天的一个项目总用到了AE的开发组件,也就是ESRI公司提供的一系列的开发包(组件)都是以dll(动态链接库的形式)然后今天在调试的时候却出现了“正试图在 OS 加载程序锁内执行托管代码.不要尝试在 ...

  5. VMWare Workstation使用总结几则[转]

    VMWare Workstation使用总结几则   1.安装 使用GHOST盘安装时一定要注意,需要把空盘建立分区并设置为主分区 PQ的使用形式,进入PQ找到磁盘设置为启用 否则 启动后显示Boot ...

  6. 2015.09.16 SCADA系统介绍及应用

    SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监视控制系统.SCADA系统是以计算机为基础的DCS与电力自动化监控系统:它应用领域很广 ...

  7. linux rabbitmq 安装

    下载 在安装 erlang 时使用的是源码包21.0版本:接着下载 rabbitmq-server/3.7.7 的源码包,编译时报错,说 erlang 版本号不满足条件,erlang版本>=19 ...

  8. PHP匹配当前传入是何种类型

    本文出至:新太潮流网络博客 /** * [is_string_regular_type 正则自动验证传入数据] * @E-mial wuliqiang_aa@163.com * @TIME 2017- ...

  9. linux 局域网探测工具nmap

    NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个, 一是探测一组主机是否在线: 其次是扫描主机端口,嗅探所提供的网络服务: 还可以推断主机所用的操 ...

  10. System.Web.Optimization对脚本和样式表的操作

    这个也是本章重点向描述的部分,首先我们可以使用VS2012RC来新建一个MVC4.0项目,版本可以为4.0或4.5.在Global.asax文件代码中,我们发现已经把过滤器,路由器,以及对样式表和脚本 ...