开源中文网

您的位置: 首页 > 编程开发 > Tcl > 正文

字符串操作----Regsub 用法(Tcl/Tk 手册)

来源:  作者:

名称 
regsub - 基于正则表达式模式匹配完成替换操作 
语法 
regsub -switches {exp} string {subSpec} varName 

描述 
这个命令对string进行正则表达匹配,然后把字符串拷贝进入varName中,如果没有varName则将字符串返回。(正则表达式语法匹配描述在re_syntax中。)如果匹配成功,就把匹配的部分换成subSpec后再拷贝到varName中,如果subSpec包含"&"和"\0",将会替换为匹配的字符串,如果包含"\n"将被替换为字模式匹配的字符串,多添加一个反斜杠将会阻止解释其去解释"&"、"\0"、"\n"和"\",为了防止这些情况发生,把subSpec放入花括号中会更加安全。 
如果紧接着regexp的第一个变元以-开头,那么就会被当作可选项来处理,可以使用的选项如下: 

-all 
在字符串中符合使正则表达式的部分全部被匹配并且全部会被替换,没有这个可选项就只有第一个匹配的字符串会被替换。在-all选项下,所有匹配的字符串都会分别根据匹配情况进行"&"和"\n"的替代。 
-expanded 
使正则表达式使用扩展语法,空格键和注释会被忽略,与指定了(?x)嵌入选项相同(参见re_syntax帮助手册)。 
-line 
换行符敏感。换行符是字符串的结束符,如果使用了这个标志位,[^和.不会匹配换行符,如果有换行,那么^和$匹配一个空字符串,这个标志为相当于同时指定了-linestop和-lineanchor,与(?n)嵌入选项相同(参见re_syntax帮助手册)。 
-linestop 
使[^和.不会匹配换行符,与(?p)嵌入选项相同(参见re_syntax帮助手册)。 
-lineanchor 
使^和$的行为改变为面向行的方式,与(?w)嵌入选项相同(参见re_syntax帮助手册)。 

-nocase 
是大写字母也被当作小写来处理,相当于不区分大小写字符。 
-start index 
指定了开始匹配的索引位置,当使用了这个可选项,^不会从字符串的开头匹配,而是从指定的索引位置开始匹配。 
-- 
指示可选项的结束,这个可选项主要用于exp以-开头的时候。 
如果提供了varName,这个命令将返回匹配和替换的数量,不提供则返回替换后的字符串,参见regexp命令以了解更多信息。 

示例 
使用bar替代字符串中所有的foo: 
regsub -all {\<foo\>} $string bar string 
使用双引号把匹配的字符串括起来: 

regsub -nocase {\<interesting\>} $string {"&"} string 
通过regsub和subst命令把所有非ASCII和Tcl特殊意义的字符使用\u转义: 

# 这个正则表达式是所有“非法”字符的字符集set RE {[][{};#\\\$\s\u0100-\uffff]}# 替换一个中括号中的tcl命令set substitution {[format \\\\u%04x [scan "\\&" %c]]}# 将命令传给subst使format命令得到替换set quoted [subst [regsub -all $RE $string $substitution]] 

Tags:字符串 手册
相关文章列表:
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明