TCL中使用regexp提取包含数字5的完整数值问题求助
TCL regexp提取含数字5的数值解决方案
你可以调整正则规则为匹配包含数字5的独立数字串,实现代码如下:
set x "55 6 90 5 89 105 7 85 191" puts [regexp -all -inline {\y[0-9]*5[0-9]*\y} $x]
规则说明
你之前写的{9.+}规则是匹配以字符9开头、后面跟任意1个及以上字符的连续串,所以会从第一个出现的9开始一直匹配到字符串末尾,自然会包含大量不符合要求的内容。
上述正确代码的正则规则含义如下:
\y是TCL正则中的单词边界标识,确保匹配的是独立的数值,不会出现把数值和前后其他字符粘在一起匹配的问题[0-9]*匹配0个或多个数字5固定匹配数字5,确保整个数值里包含至少一个5- 组合起来的规则就是:匹配前后都是单词边界、由数字组成、内部至少包含一个5的完整字符串
运行上述代码输出结果为55 5 105 85,和你之前用lsearch实现的效果完全一致。
内容的提问来源于stack exchange,提问作者dodobirdie
相关产品推荐
相关产品推荐

