gpt4 book ai didi

regex - 重复正则表达式模式

转载 作者:行者123 更新时间:2023-12-03 18:18:22 28 4
gpt4 key购买 nike

首先,我不知道这是否真的可能,但我想做的是重复一个正则表达式模式。
我使用的模式是:

sed 's/[^-\t]*\t[^-\t]*\t\([^-\t]*\).*/\1/' films.txt

一个输入
250.    7.9    Shutter Island (2010)    110,675

将返回:
Shutter Island (2010)

我匹配所有无标签,(250。)然后标签,然后所有无标签(7.9)然后标签。接下来我反向引用电影标题,然后匹配所有剩余的字符 (110,675)。

它工作正常,但我正在学习正则表达式,这看起来很难看,正则表达式 [^-\t]*\t 在其自身之后重复,无论如何要重复这个,就像你可以像 {2,2} 这样的字符一样?

我试过 ([^-\t]*\t){2,2} (和变体)但我猜这是试图匹配 [^-\t]*\t\t?
此外,如果有任何方法可以使我上面的代码更短更干净,我们将不胜感激。

最佳答案

这对我有用:

sed 's/\([^\t]*\t\)\{2\}\([^\t]*\).*/\2/' films.txt

如果您的 sed支持 -r你可以摆脱大部分的转义:
sed -r 's/([^\t]*\t){2}([^\t]*).*/\2/' films.txt

换第一个 2选择不同的字段 (0-3)。

这也将起作用:
sed 's/[^\t]\+/\n&/3;s/.*\n//;s/\t.*//' films.txt

更改 3选择不同的字段 (1-4)。

关于regex - 重复正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980171/

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