regex - 如何在 bash 中执行简单的正则表达式匹配?

标签 regex bash

我正在尝试匹配字符串开头的数字

452MATCHME

用这个简单的正则表达式

/^\d*/

我想要这个结果,保存在一个变量中

452

但是我找不到获取操作结果的方法。我读过 this tutorial , 但它描述了一个数组 BASH_REMATCH ,其中存储了所有 =~ 操作的匹配结果。但是,出于某种原因,该数组在我的案例中不存在。我使用的是 bash 版本 4.2.10(1)。

我能想到的唯一其他选项是 grep,但据我所知,它只能输出与正则表达式匹配的行。

我怎样才能达到我的结果?

最佳答案

var=452MATCHME
echo ${var%%[^0-9]*}

这将从第一个非数字到最后删除。

Bash 参数在大多数情况下都足够了,所以我建议您熟悉它。这是 bash 模式的链接: http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching

关于regex - 如何在 bash 中执行简单的正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7203662/

相关文章:

linux - 为什么shell会在这种情况下启动另一个shell进程?

bash - 当无法断言作业控制时,如何告诉 bash 不要发出警告 "cannot set terminal process group"和 "no job control in this shell"?

bash - 使用 join 对日志文件进行排序

regex - 应用程序脚本正则表达式 : SyntaxError: Invalid quantifier

Python 正则表达式 : Group Backref

regex - 在特定单词和提到的单词之后打印值

java - bash:/usr/local/android-sdk-linux/tools/android: 权限被拒绝

bash - 为什么将我的 $PATH 与 `read -r -a line` 分开工作但不能与 `while read -r line` 分开?

javascript - 使用正则表达式测试密码

javascript - js 中的正则表达式 .replace()