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

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

使用正则表达式需要借助两个重要工具: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. javascript代码

    LazyMan 实现LazyMan(什么是LazyMan?请自行google) function _LazyMan(_name) { var _this = this; _this.tasks = [ ...

  2. 用js获取当前月份的天数

    在获取每月天数的时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了. js可以通过Date对象很方便的获取到每月的天数,在初始化Date对象时, ...

  3. JSP 插入到数据库的数据出现 “SQLServerException: 将截断字符串或二进制数据” 错误解决方案

    最近在编写一个小型基于的jsp系统开发.掌握数据库一直感觉还不错.但是今天就出现了一个问题困扰我大半天.后来本来准备睡觉,但是觉得今天不解决这个问题恐怕晚上是“彻夜难眠啊”!!于是打开电脑,又开始捣腾 ...

  4. C# 生成缩略图 去除图片旋转角度

    图片生成缩略图会有旋转角度 /// <summary> /// 测试JRE图片压缩后图片会旋转问题 /// </summary> public void Uploadimg1( ...

  5. CSS选择器之基本选择器+属性选择器

    1.1      id选择器 #main{ font-size:12px; margin:0; padding:0; } 其中的#main就是id选择器,用于选择HTML页面中id = "m ...

  6. arcgis JavaScript 加载 mapbox地图

    mapbox 地图现在是越来越好看了, 随便试 /** * Created by Administrator on 2018/5/15 0015. */ import * as esriLoader ...

  7. FastDFS部署安装全过程

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/153205 ...

  8. HTTP请求封装:Ajax与RESTful API

    一.HTTP请求 HTTP即超文本传输协议,用以进行HTML 文件. 图片文件. 查询结果等的网络传输. 一个完整的HTTP请求包括:请求行.请求头.空行和请求数据(请求数据可以为空) HTTP1.1 ...

  9. url override implements session

    url 重写实现会话概述 URL重写是对GET请求参数的应用,当服务器响应浏览器上一次请求时,将某些相关信息以超链接方式响应给浏览器,超链接中包括请求参数信息. 特点:URL必须以GET方式发送请求. ...

  10. 带你从零学ReactNative开发跨平台App开发-[react native 仿boss直聘](十三)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...