gpt4 book ai didi

regex - 为什么空格分隔而不是 FPAT

转载 作者:行者123 更新时间:2023-12-01 10:14:26 26 4
gpt4 key购买 nike

我正在尝试拆分由 ',' 分隔的字符串,除非 ',' 位于用方括号括起来的子字符串中。修改这里的其他解决方案和文档中的示例我尝试了这个测试:

awk -v FPAT='([^,]+)|(\([^\))+\))' '{
for (i=1; i<=NF; i++) {
printf("%s\n", $i)
}
}' <<< 'one two (1one), three four (3three, 4four), five six, seven eight, nine ten eleven (8ten)'
one
two
(1one),
three
four
(3three,
4four),
five
six,
seven
eight,
nine
ten
eleven
(8ten)

FPAT 没有像我预期的那样覆盖默认分隔符。很明显我错过了一些东西。

我想要的输出是:

one two (1one),
three four (3three, 4four),
five six,
seven eight,
nine ten eleven (8ten)

最佳答案

使用 gnu grep:

s='one two (1one), three four (3three, 4four), five six, seven eight, nine ten eleven (8ten)'
grep -oP '\s*\K([^,(]*\([^)]*\))*[^,]*(,|$)' <<< "$s"

one two (1one),
three four (3three, 4four),
five six,
seven eight,
nine ten eleven (8ten)

如果你没有gnu grep那么你可以使用

grep -oE '([^,(]*\([^)]*\))*[^,]*(,\s*|$)' <<< "$s"

这将在逗号后留下尾随空格。

对于 regex explanation see this demo .

关于regex - 为什么空格分隔而不是 FPAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53275747/

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