gpt4 book ai didi

regex - 我们真的可以没有惰性量词吗?

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

很多人说我们可以在正则表达式中不用惰性量词,但我遇到了一个没有它们就无法解决的问题(我在这里使用 sed)。

我要处理的字符串由字率分隔的子字符串组成,例如:

anfhwe9.<<76xnf9247 rate 7dh3_29snpq+074j rate 48jdhsn3gus8 rate

我想用 3 个破折号 (---) 替换这些子字符串(除了单词“rate”);结果应该是:
---rate---rate---rate

据我所知(我不懂 Perl),使用惰性量词可以轻松完成。在 vim 中也有惰性量词;我是用这个命令做的
:s/.\{-}rate/---rate/g

哪里 \{-}告诉 vim 匹配尽可能少。

然而,vim 是一个文本编辑器,我需要在许多机器上运行该脚本,其中一些没有安装 Perl。如果您可以告诉正则表达式不匹配像 .*[^(rate)]rate 这样的原子分组,也可以解决这个问题。但这没有用。

任何想法如何使用 POSIX 正则表达式来实现这一点,或者是不可能的?

最佳答案

在这种情况下,我会使用 split():

perl -n -e 'print join ("rate", ("---") x split /rate/)' [input-file]

关于regex - 我们真的可以没有惰性量词吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642234/

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