Tcl常用命令备忘录-正则命令篇

这篇具有很好参考价值的文章主要介绍了Tcl常用命令备忘录-正则命令篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tcl常用命令备忘录-正则命令篇

Tcl常用命令备忘录-正则命令篇

正则表达式是一种用于匹配、查找、替换文本中特定模式的工具。在Tcl脚本中,可以使用正则表达式对字符串进行匹配、查找和替换。

Tcl常用命令备忘录-正则命令篇

regexp

语法: 

regexp ?选项? 正则表达式 字符串 ?变量1 变量2 ...?

其中,?选项?为可选项,可以省略。正则表达式为要匹配的模式,字符串为要匹配的文本。?变量1 变量2 ...?为可选的变量,用于存储匹配结果。

参数说明:

  • 选项:用于控制regexp命令的行为,常用的选项有:
    • -nocase:忽略大小写匹配。
    • -inline:返回匹配结果,而不是返回值。
  • 正则表达式:定义匹配模式的字符串,可以使用各种正则表达式元字符和特殊字符。
  • 字符串:要匹配的字符串。
  • 变量:用于存储匹配结果的变量,可以使用$符号在后续代码中引用。

示例:

1、匹配首尾空格

set str "  Tcl Scripting  "
regexp {^\s*(.*)\s*$} $str match result
puts $result

输出:

Tcl Scripting

解释:

  • 正则表达式{^\s*(.)\s$}中,^表示匹配字符串开头,\s表示匹配零个或多个空格,(.)表示匹配任意字符任意次,\s*$表示匹配零个或多个空格,并匹配字符串结尾。
  • regexp命令将$Str与正则表达式进行匹配,匹配结果存储在变量$result中。
  • 最终输出变量$result的值。

2、查找字符串中的数字

set str "Tcl Scripting 2020"
regexp -inline {\d+} $str match result
puts $result

输出:

2020

解释:

  • 正则表达式{\d+}中,\d表示匹配数字字符,+表示匹配至少一个数字字符。
  • 使用了选项-inline,将匹配结果直接返回。
  • 最终输出变量$result的值。

3、替换字符串中的单词

set str "Tcl Scripting is fun"
set new_str [regsub -nocase {\bis\b} $str "is not"]
puts $new_str

输出:

Tcl Scripting is not fun

解释:

  • 使用了命令regsub,将字符串$str中的\bis\b替换成is not。
  • 选项-nocase表示忽略大小写匹配。
  • 最终输出变量$new_str的值。

4、使用变量存储匹配结果

set str "Tcl Scripting 2020"
set pattern {\d+}
regexp $pattern $str match result
puts "Matched: $result"
set start [lindex $result 0]
set end [lindex $result end]
puts "Start position: $start, end position: $end"

输出:

Matched: 2020
Start position: 13, end position: 16

解释:

  • 将正则表达式存储在变量$pattern中,方便重复使用。
  • 使用regexp命令进行匹配,将匹配结果存储在变量$result中。
  • 输出匹配到的数字,使用lindex命令获取匹配结果的起始位置和结束位置。
  • 输出匹配结果的起始位置和结束位置。

regsub

语法:

regsub ?-all? ?-nocase? exp string subSpec varName

参数说明:

  • -all:可选参数,表示全局替换所有符合正则表达式的匹配项。
  • -nocase:可选参数,表示忽略大小写。
  • exp:正则表达式。
  • string:目标字符串。
  • subSpec:替换规则。
  • varName:替换后的结果存储在此变量中。

示例:

1、将字符串中的所有数字替换为"#":

set str "hello123world456"
regsub -all {\d} $str "#" result
puts $result

输出:

hello###world###

解释:

\d匹配任何数字,-all选项表示全局替换。

2、将字符串中的所有空格替换为"_":

set str "hello world"
regsub {\s} $str "_" result
puts $result

输出:

hello_world

解释:

\s匹配任何空白字符,包括空格、制表符、换行符等。由于没有使用-all选项,只替换了第一个匹配项。

3、将字符串中的所有单词的首字母大写:

set str "hello world"
regsub -all -- {\w+} $str {string toupper [string index "&" 0]} result
puts $result

输出:

Hello World

解释:

\w+匹配任何单词,string toupper [string index "&" 0]表示将匹配到的字符串的首字母大写。由于使用了-all选项,全局替换。

4、将字符串中的所有"_"后面的字母大写:

set str "hello_world"
regsub -all -- {_([a-z])} $str {string toupper "&"} result
puts $result

输出:

hello_World

解释:

_([a-z])匹配包含"_"后面一个小写字母的子串,string toupper "&"将匹配到的子串全部大写。由于使用了-all选项,全局替换。

5、忽略大小写,将字符串中的所有"abc"替换为"xyz":

set str "abcABCabC"
regsub -nocase -all {abc} $str "xyz" result
puts $result

输出:

xyzXYZxYz

解释:

-nocase选项表示忽略大小写。

Tcl常用命令备忘录-正则命令篇

Tcl常用命令备忘录-正则命令篇 

知识星球入口 

 文章来源地址https://www.toymoban.com/news/detail-489937.html

到了这里,关于Tcl常用命令备忘录-正则命令篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手机备忘录如何批量导出来,备忘录整体导出方法介绍

    手机备忘录如何批量导出来?一些品牌的手机上有自带的备忘录,大多手机自带备忘录都不支持直接批量导出,只能通过分享或复制类的功能逐条导出,手动进行整理。 除了手机自带备忘录,一些朋友会选择在自己的手机上使用云便签备忘录,不仅可以在线添加备忘录提醒事

    2024年02月16日
    浏览(48)
  • 苹果备忘录如何转移?备忘录怎么转移到新手机?

    对于很多苹果手机的用户而言,想必都有使用备忘录的习惯吧?但是,经过长期的使用,当需要更换手机设备时,您考虑过如何转移这些记录吗? 苹果备忘录怎么转移到新手机? 如您使用的是苹果手机内置的备忘录,并且需要更换的新设备依然是苹果手机,其解决方案非常

    2024年02月13日
    浏览(56)
  • 苹果手机备忘录如何导入新手机?手机备忘录怎么转移?

    一般来说,大多数手机用户更换手机的频率是3—5年,在一部手机使用了几年之后,就会出现内存不足、系统卡顿、电池续航时间较短等问题,这时候就需要更换新的手机了。有不少苹果手机用户在更换新手机的时候,都很发愁一个问题,这就是手机备忘录如何导入新手机。

    2024年01月25日
    浏览(42)
  • 备忘录模式

    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 1.1 撤销操作: 例如,在文本编辑器中,当我们对文本进行修改时,可以使用备忘录模式来实现撤销操作。每次对文本进行修改时,就保存当

    2024年02月03日
    浏览(43)
  • 博文备忘录

    https://blog.csdn.net/ZQ_KING/article/details/80320080 (链接层)MAC地址——ARP协议 (网络层)IP地址——IP协议 (传输层)端口——UDP协议、TCP协议 (应用层)域名——HTTP协议、HTTPS协议 https://github.com/xiaomuzhu/front-end-interview/blob/master/docs/guide/http.md (http) https://github.com/xiaomuzhu/front-

    2024年02月08日
    浏览(41)
  • 备忘录模式(Memento)

    备忘录模式是一种行为设计模式,在不破坏封装性的前提下,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 一个备忘录(memento)是一个对象,它存储另一个对象在某个瞬间的内部状态,而后者称为备忘录的原发器(originator)。当需要设置原发器的检查点时,取

    2024年02月13日
    浏览(37)
  • stata备忘录

    1. 画图 (1)时间趋势图 等价命令 字体大小 option 字体大小option description zero no size whatsoever, vanishingly small minuscule smallest quarter_tiny third_tiny half_tiny tiny vsmall small medsmall medium medlarge large vlarge huge vhuge largest tenth one-tenth the size of the graph quarter one-fourth the size of the graph third one-thi

    2024年02月03日
    浏览(40)
  • 《设计模式》备忘录模式

    定义 : 备忘录模式又称为快照模式或者令牌模式, 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 属性 行为型 模式。 备忘录模式的角色组成 : Originator(发起人) :负责创建一个 Memento

    2024年02月06日
    浏览(45)
  • C语言备忘录一

    int arr[5] = {1, 2, 3, 4, 5}😭 数组 【】中的数字大小是从一开始数,{}中的大小是从零开始数) extern extern表明变量或者函数是定义在其他其他文件中的 int a = 5与int a = 5意义是一样的,都是定义。而extern int a;是声明。但会产生一条警告; extern \\\"C\\\"的主要作用就是为了能够正确实现

    2024年02月06日
    浏览(35)
  • iPhone备忘录清除缓存

    离剁手只有一张图,就是: 遇到问题就去找方法,找方法就要找问题源头,经过我不懈的努力,我终于找到了万恶之源——备忘录。 奇怪的是我的东西并不多,而且写图文总结的备忘录,一般都会放在iCloud上,前几日我一直是觉得自己的图片放得太多才导致如此,但狂删除

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包