shell学习2:正则表达式(一):字符匹配

正则表达式使用场景
  1. 测试字符串内的模式
    例如,数据验证:测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式

  2. 替换文本
    识别文档中的特定文本,完全删除该文本或用其他文本替换它

  3. 基于模式匹配从字符串中提取子字符串
    查找文档内或输入域内特定的文本

正则表达式详细学习资料见链接

https://juejin.im/post/5965943ff265da6c30653879

范围表示法

用连字符 - 表示省略和简写
例如: [1234567abcdefGHIJKLM] 可写成 [1-7a-fG-M]
如果要匹配"a"、"-"、"z"这三个字符中的任意一个字符不能写成[a-z](表示小写字符中的任意一个字符),要写成:[-az][az-][a-z],- 要么放在开头,要么放在结尾,要么转义,不要让引擎认为是范围表示法

排除字符组

字符组的第一位 ^ (脱字符)表示求反。例如,[^abc] 表示一个除"a"、“b”、"c"之外的任意一个字符

常见字符组的简写
简写含义
\d[0-9],表示一位数字
\D[^0-9],表示除数字外的任意字符
\w[0-9a-zA-Z_],表示数字、大小写字母及下划线(单词字符)
\W[^0-9a-zA-Z_],表示非单词字符
\s[ \t\v\n\r\f],表示空白符(空格、水平制表符、垂直制表符、换行符、回车符、换页符)
\S[^ \t\v\n\r\f],表示非空白符
.[^\n\r\u2028\u2029],通配符,表示几乎任意字符,换行符、回车符、行分割符和段分隔符除外

如要匹配任意字符,可使用 [\d\D]、[\w\W]、[\s\S]、[^]

量词
简写含义
{m,}表示至少出现m次
{m}{m,m},表示出现m次
{0,1},表示出现或不出现
+{1,},表示出现至少一次
*{0,},表示出现任意次,有可能不出现
匹配与分支

/d{2,5}/,表示数字连续出现2-5次,会匹配2位、3位、4位、5位连续数字。会尽可能多的匹配,为贪婪匹配;如果需要匹配尽可能少的位数需要在量词后加 惰性匹配

多选分支 (p1|p2|p3),表示其中任意一个模式,其中p1、p2、p3为子模式,|为管道符;分支结构默认为 惰性匹配

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值