zoukankan      html  css  js  c++  java
  • 正则匹配与替换 regexp & regsub

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

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

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

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

    sed  的用法参考这篇博文:   linux sed 命令常见用法

    regexp

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

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

    第一种用法举例:

    regexp  {^([0-9]+[a-z]+|[A-Z]+[0-9]+)$}  123abc

    这个正则表达式用于匹配 “数字开头且小写字母结尾” 或者 “大写字母开头且数字结尾” 的表达式,所以返回值为 1

    详细解释: ^ 匹配开头,$ 匹配结尾,中间的 | 表示 “或”,[0-9] 表示一个0到9之间的阿拉伯数字,[a-z] 表示 a 到 z 之间的一个小写字母, + 表示前面的字符出现一次或者多次

    第二种用法子串匹配举例  

    regexp  {([0-9]+)s([a-z]+)}  "there are 100 apples"   str01   sub01   sub02 

    这个正则表达式用于匹配“一个或多个数字,接着是一个空格,然后再跟一个或多个小写字母”

    匹配成功就返回1,并将匹配到的字符串保存到 str01,第一个子串保存到 sub01,第二个子串保存到 sub02

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

    regsub

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

    比如:

    regsub  {there}  “they live there lives”   their   str  

    正则表达式为 there ,匹配字符串中的单词 there,将其替换为 their,并将替换后的整个字符串存入变量 str, 返回值为 1,

    所以变量 str 的值就是  $str="they live their lives" 

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

    |-------------------------------------|

  • 相关阅读:
    poj 1013 Counterfeit Dollar
    poj百练2973:Skew数 进制问题
    poj百练2972 进制问题
    poj2080 Calendar
    POJ 1928 The Peanuts
    EXCEL打开CSV文件乱码的解决方法
    希望博客园做个软件职业生存状态调查问卷
    Linq使用Group By [转]
    ADO.NET 从DataTable中获取某列含有的不同值的几种方式
    本该遭拒的十大科技专利:苹果滑动解锁上榜[转]
  • 原文地址:https://www.cnblogs.com/xiaoxie2014/p/9347620.html
Copyright © 2011-2022 走看看