加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

regex – 使用match在只有bash的字符串中查找子字符串

发布时间:2020-12-15 09:24:51 所属栏目:安全 来源:网络整理
导读:虽然我几乎肯定这已被覆盖,我似乎找不到任何具体到这个。当我继续我的学习bash的旅程,我不断寻找部分,我不知道为什么事情发生他们的方式。 搜索和替换或只是匹配字符串中的子字符串很可能是编写脚本时做的第一件事。但是,试图坚持使用一种单一的语言或者
虽然我几乎肯定这已被覆盖,我似乎找不到任何具体到这个。当我继续我的学习bash的旅程,我不断寻找部分,我不知道为什么事情发生他们的方式。

搜索和替换或只是匹配字符串中的子字符串很可能是编写脚本时做的第一件事。但是,试图坚持使用一种单一的语言或者一组工具很难在bash中做,因为你能够以多种方式解决大多数问题。我正在尽最大努力保持与bash尽可能低的水平。我遇到了一个障碍,我需要有人向我解释。

做子字符串在带有匹配的bash中搜索会根据我使用的正则表达式给出不同的结果,我不知道为什么。

#!/bin/bash
Stext="Hallo World"
echo `expr "$Stext" : '^(.[a-z]*)'` # Hallo
echo `expr "$Stext" : '.*World'`      # 11

虽然都搜索一个字,我想,两者都不返回他们发现的东西。为什么?

两个表达式都是等价的,区别是您使用的正则表达式:
$ echo `expr "$Stext" : '^(.[a-z]*)'`
Hallo
$ echo `expr "$Stext" : '^.[a-z]*'`
5
$ echo `expr "$Stext" : '(.*World)'`
Hallo World
$ echo `expr "$Stext" : '.*World'`
11

如你所见,括号是返回匹配长度或匹配本身的区别的原因。

你可以在Chapter 10的高级Bash脚本指南中找到更多的例子。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读