gpt4 book ai didi

regex - 使用 regsub 从字符串末尾进行非贪婪匹配

转载 作者:行者123 更新时间:2023-12-02 06:32:18 24 4
gpt4 key购买 nike

我的文件夹路径如下:

/h/apps/new/app/k1999

我想用以下正则表达式删除 /app/k1999 部分:

set folder "/h/apps/new/app/k1999"
regsub {\/app.+$} $folder "" new_folder

但结果是 /h: 移除了太多元素。

我注意到我应该使用非贪婪匹配,所以我将代码更改为:

regsub {\/app.+?$} $folder "" new_folder

但结果仍然是 /h。上面的代码有什么问题?

最佳答案

非贪婪仅仅意味着它会尝试匹配最少数量的字符并在整个正则表达式不匹配时增加该数量。相反 - 贪婪 - 意味着它将尝试匹配尽可能多的字符,并在整个正则表达式不匹配时减少该数量。

正则表达式中的

$ 表示字符串的结尾。因此 something.+$something.+?$ 将是等价的,只是在匹配之前会进行更多的重试。

在您的情况下, /app.+/apps 匹配,这是您的字符串中第一次出现 /app。您可以通过更明确并添加 /app 之后的 / 来修复它:

regsub {/app/.+$} $folder "" new_folder

关于regex - 使用 regsub 从字符串末尾进行非贪婪匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177406/

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