Tcl正则命令之regsub

regsub

regsub ?switches? exp str subSpec ?varName?

基于正则表达式匹配执行替换。将正则表达式exp与字符串str匹配,并将str复制到名为varName的变量中。如果未指定varName则返回str。在str复制的过程中,str中匹配exp的字符串将被subSpec替换。如果subSpec中包含&”或“\0”,则使用str中匹配exp的字符串替换“&”和“\0”。如果subSpec包含“\n”(n为1到9的整数),则使用str中与exp第n个圆括号匹配的字符串进行替换。可以通过在“&”、“\0”、“\n”和“\”前加反斜杠“\”来防止特殊转义。subSpec中使用反斜杠经常会影响Tcl解析器的反斜杠使用,所以如果subSpec中使用反斜杠,通常用大括号括起来。

如果regsub的参数以“-”开始,则视为开关,支持的开关如下:

开关说明
-all找到所有与exp匹配的字符串并对每个匹配项执行替换。如果不使用此开关,则只替换一个匹配的字符串。如果使用此开关则使用对应的匹配信息对每个替换出路“&”和“\n”序列。
-expanded启用正则表达式扩展语法,与regexp相同。
-line开启行敏感匹配,与regexp相同。
-linestopregexp相同。
-lineanchorregexp相同。
-nocase匹配时不区分大小写,但是替换时subSpec使用未转换的字符串。
-start index指定匹配正则表达式的字符串str的起始位置,与regexp相同。
--标记开关结束。后面的参数将被视为exp,即使它以-开头。

简单示例

set multiline a\nAb\nAcb\nc
regsub a.*b $multiline ad& test
puts $test
regsub -all -nocase a.*?b $multiline ad&
regsub -line -all -nocase a.*b $multiline ad&
regsub -nocase -- -a(.*)c  -Abcde xxx\\1yyy

 

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值