You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TCL regexp惰性修饰符失效:如何提取字符串中的'D1P5'

TCL regexp 提取指定内容的问题解决

原命令的问题在于正则表达式里的\S会匹配包括下划线在内的所有非空白字符,即便用了非贪婪模式+?,也会因为\S包含下划线,导致匹配范围超出预期的_边界。

修正后的正则表达式可以把\S替换为[^_](匹配除下划线外的任意非空白字符),这样就能精准匹配两个_之间的内容:

regexp {\S+_(D[^_]+)_} "abc_D1P5_efg_hij_k" dmy var
puts $var

执行后会得到预期输出:

D1P5

另外,也可以用更简洁的正则直接定位两个_之间的目标内容,避免前面的\S+可能带来的潜在问题:

regexp {_(D[^_]+)_} "abc_D1P5_efg_hij_k" dmy var

这个正则会直接匹配第一个_后、下一个_前的D开头内容,结果一致。

内容的提问来源于stack exchange,提问作者Gert Gottschalk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:03:11