作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的文件夹路径如下:
/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/
我的文件夹路径如下: /h/apps/new/app/k1999 我想用以下正则表达式删除 /app/k1999 部分: set folder "/h/apps/new/app/k1999" regs
我需要在 Tcl 中将字符串从二维数组转换为一维。 例如 lane_out[0][7] -> lane_out[7] lane_out[1][0] -> lane_out[8] 初始字符串从文件
我尝试了以下代码: set exp {elem[0]} set temp {elem[0]} regsub $temp $exp "1" exp if {$exp} { puts "#####
我是一名优秀的程序员,十分优秀!