正则表达式实例教学

1 正则表达式字符介绍

参考 正则表达式手册

2 常用符号演示

在线测试网址 http://tool.chinaz.com/regex/

^

匹配输入字符串的开始位置
在这里插入图片描述

*

匹配前面的子表达式零次或多次
在这里插入图片描述

{n,m}

m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次在这里插入图片描述

[a-z]

字符范围,也有[0-9]等
在这里插入图片描述

3 实例演示

实例1

要处理的需求:匹配SCC_VID_COLOR_SYS_XXX,然后在其后面增加一个字符串YYY

  1. 步骤1:找到指定位置
    在这里插入图片描述
    讲解:
字段SYS(_[A-Z]{1,}){1,2}(_[0-9]{1,}){0,},
讲解SYS字符串(_+大写字母+至少一个)+这样的结构一或两个(_+数字+至少一个)+这样的结构没有或者有

更精简的写法:SYS(_[A-Z0-9]*){1,}

  1. 步骤2:替换内容
    下面这样写,结果不符合预期在这里插入图片描述
    这里要引入分组方法,在正则表达式里面用小括号()代表一个组,在替换的时候使用\1、\2代表第一个第二个分组。(有些工具使用\n,有些使用$n代表),下面这样写才对
    在这里插入图片描述
  2. 转化为代码正则
    如果是代码里面需要写正则表达式,那么还是刚才那个在线工具,就能把正则转换为不同语言的代码http://tool.chinaz.com/tools/regexgenerate,当然熟练的也可以自己直接写。
    在这里插入图片描述

    实例2

原数据:
Attr Name=“SW_PowerCurrent” Alias=“SW_PowerCurrent” Ids=“0” Atoms=“100”
要求:这种行,把最后的100换成0
最终ok的shell脚本
sed -i -r “s/(SW_PowerCurrent.Atoms=").(”)/\10\2/" $xxx/cvte_ocsxml.xml

这里有几个坑:
1、前面()的集合,后面要用的时候不能用$1,要用/1
2、用了/1和/2之后,会报错\2 on `s’ command’s RHS,原因是之前只用了sed -i,需要增加-r
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值