regex - 获取括号内的多个值

标签 regex bash brackets

我想检索括号之间的多个字符串。这是我现在使用的命令:

grep '\[*\]' src/config/mail.ini

它返回给我的输出如下:

[GLOBAL]
[MAIL_1]

如何才能一一得到结果?并且,在这种情况下,作为两个变量?

最佳答案

您可以使用

grep -o '\[[^][]*]' src/config/mail.ini

请参阅online grep demo

-o选项使 grep提取匹配的子字符串而不是打印匹配行,并且 \[[^][]*]模式匹配:

  • \[ - 一个[字符
  • [^][]* - 除 ] 之外的 0 个或多个字符和[ (使用“智能放置”,括号表达式开头的 ] 被视为 ] 并且 [ 字符在括号表达式内并不特殊)
  • ] - 一个] char(无需转义 ] )。

逐场处理比赛:

while read -r line ; do
    echo "Processing $line"
    # your code goes here
done < <(grep -o '\[[^][]*]' src/config/mail.ini)

关于regex - 获取括号内的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60639591/

相关文章:

flutter - Flutter/Dart中的 "closing brackets syndrome"怎么解决?

c# - 是否可以实现具有通用功能的索引运算符 '[]'

javascript - 使用正则表达式替换文本

linux - tmux:混淆行为与重定向和管道

linux - ip 规则 : deleting all rules from table

linux - PATH 应该包含目录还是二进制文件的完整路径?

lambda - Scheme 中 lambda 表达式的求值顺序

sql - 计算字段中的位数

c++ - “正则表达式”类型无法识别

python - Python re 模块中的非贪婪模式