首页 > 解决方案 > 如何在bash中使用正则表达式查找字符串的特定部分

问题描述

我想在 bash 中使用正则表达式查找字符串的特定部分。此外,我想将该部分存储在另一个 bash 变量中。通过在网上搜索,我可以找到一种解决方案:

#!/bin/bash

string="aaa.ddd.config.uuu"
result=`expr match "$string" '\(.*\)\.config.*'`
echo $result

在上述情况下,我想找出之前的部分,"\.config"并希望将其存储在另一个名为result. 以上是一种好的有效方法吗?我想知道在这种情况下推荐的方法是什么。

标签: regexbash

解决方案


您可以使用bash内置的正则表达式和BASH_REMATCH捕获正则表达式匹配结果的数组变量:

$ string="aaa.ddd.config.uuu"
$ [[ $string =~ (.*)\.config ]] && result=${BASH_REMATCH[1]} 
$ echo $result
aaa.ddd

推荐阅读