gpt4 book ai didi

正则表达式提取括号之间的值

转载 作者:行者123 更新时间:2023-11-29 09:29:53 24 4
gpt4 key购买 nike

我已经查看了一些与此相关的线程,但似乎无法使其正常工作。显然我的正则表达式语句和/或 bash_rematch 有问题。

最多只能有 4 个 x ()

具有以下 bash 脚本:

#!/bin/bash
brackets_regex="\((.*?)\)"
text="random date (entry1) some more random data (entry2) random (entry3) random data (entry4)"

if [[ $text =~ $brackets_regex ]]; then
echo ${BASH_REMATCH[0]};
echo ${BASH_REMATCH[1]};
echo ${BASH_REMATCH[2]};
echo ${BASH_REMATCH[3]};
fi

预期输出应该是:

entry1
entry2
entry3
entry4

当前输出:

(entry1) some more random data (entry2) random (entry3) random data (entry4)
entry1) some more random data (entry2) random (entry3) random data (entry4

最佳答案

使用 gnu grep:

grep -oP '\(\K[^)]*' <<< "$text"
entry1
entry2
entry3
entry4

使用 gnu-awk:

text="random date (entry1) some more random data (entry2) random (entry3) random data (entry4)"
awk -v FPAT='\\([^)]*\\)' '{for(i=1; i<=NF; i++) {gsub(/[()]/, "", $i); print $i}}' <<< "$text"
entry1
entry2
entry3
entry4

关于正则表达式提取括号之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35060530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com