regex - 如何从 bash 中的字符串中提取值?

标签 regex git bash awk sed

我有以下格式的输入字符串:

bugfix/ABC-12345-1-00

我想提取“ABC-12345”。 C# 中该格式的正则表达式如下所示:

.\*\\/([A-Z]+-[0-9]+).\*

我怎样才能在 bash 脚本中做到这一点?我尝试过 sed 和 awk 但没有成功,因为我需要从捕获组中提取值并跳过其余部分。

最佳答案

如果你的 grep 支持 -P然后你可以使用下面的 grep 命令。

$ echo 'bugfix/ABC-12345-1-00' | grep -oP '/\K[A-Z]+-\d+'
ABC-12345

\K 将文本匹配到整个正则表达式匹配之外。

$ echo 'bugfix/ABC-12345-1-00' | grep -oP '(?<=/)[A-Z]+-\d+'
ABC-12345

(?<=/)正后视断言匹配必须在 / 之前符号。

通过sed,

$ echo 'bugfix/ABC-12345-1-00' | sed 's~.*/\([A-Z]\+-[0-9]\+\).*~\1~'
ABC-12345

关于regex - 如何从 bash 中的字符串中提取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646629/

相关文章:

regex - antlr 中一些 token 名称后面的 '^' 是做什么的?

git - Bamboo git checkout 工作时间太长

bash - 意外的输入结束 : expected close marker for Object error when trying to send a curl post request in a for loop

linux - 无法从配置文件访问关联

c# - 正则表达式 - 匹配相同模式的组

c# - 匹配失败的匹配字符串中的正则表达式索引

python-3.x - 根据现有列中的值创建新列

git - 如何以编程方式检测 GitHub 存储库中的非事件分支?

android - Android Studio:无法运行带有示例的克隆的github项目,因为我错过了gradle

bash - 如何渲染带有扩展变量的 bash 脚本?