首页/文章/ 详情

HyperWork 2024 -二次开发-正则表达式案例(13/13)

1月前浏览1357

在本系列的前12篇文章中,已经覆盖了常用Tcl语言的基础内容,从变量声明到流程控制,再到函数和命名空间的使用。然而,发了notepad++和ue的正则表达式文章后,就有有小伙伴私信说,对想了解tcl的正则表达式。为了满足这位小伙伴的需求,决定额外增加一篇关于正则表达式的文章,作为本系列的第13篇,也是最后一篇。

1. 匹配邮箱地址







set email "example@example.com"if {[regexp {^[\w\.-]+@[\w\.-]+\.\w+$} $email]} {    puts "有效的邮箱地址"} else {    puts "无效的邮箱地址"}

 2. 匹配电话号码







set phone "(123) 456-7890"if {[regexp {^\(\d{3}\) \d{3}-\d{4}$} $phone]} {    puts "有效的电话号码"} else {    puts "无效的电话号码"}

3. 匹配网址







set url "https://www.example.com"if {[regexp {^https?://[\w\.-]+\.\w+(/[\w\.-]*)*$} $url]} {    puts "有效的网址"} else {    puts "无效的网址"}

 4. 匹配日期(格式:YYYY-MM-DD)







set date "2024-08-05"if {[regexp {^\d{4}-\d{2}-\d{2}$} $date]} {    puts "有效的日期格式"} else {    puts "无效的日期格式"}

5. 匹配特定单词(如“苹果”或“香蕉”)







set text "我喜欢苹果和香蕉"if {[regexp {苹果|香蕉} $text]} {    puts "文本中含有苹果或香蕉"} else {    puts "文本中不含苹果或香蕉"}

6. 行首和行尾添加字符




set line "Hello, World!"set modifiedLine [regsub {^(.*)$} $line {123\1 123}]puts $modifiedLine

7. 匹配空行









set lines {"" "This is a line." ""}foreach line [split $lines \n] {    if {[regexp {^\s*$} $line]} {        puts "找到空行"    } else {        puts "找到非空行: $line"    }}

8. 匹配 IP 地址







set ip "192.168.1.1"if {[regexp {^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$} $ip]} {    puts "有效的IP地址"} else {    puts "无效的IP地址"}

9. 匹配只包含字母和数字的字符串







set str "Hello123"if {[regexp {^[a-zA-Z0-9]+$} $str]} {    puts "有效的字母数字字符串"} else {    puts "无效的字母数字字符串"}

10. 替换字符串中的所有空格为下划线




set text "Hello World This is TCL"set modifiedText [regsub { } $text _]puts $modifiedText  ; # 输出: Hello_World_This_is_TCL

11. 匹配并提取文件扩展名








set filename "document.pdf"if {[regexp {^(.+)\.(\w+)$} $filename match name ext]} {    puts "文件名: $name"    puts "扩展名: $ext"} else {    puts "无效的文件名"}

12. 匹配引号内的内容







set text "她说: \"你好,世界!\""if {[regexp {"(.*)"} $text match content]} {    puts "引号内的内容: $content"} else {    puts "没有找到引号内的内容"}

13.提取姓名、年龄和城市









set str "姓名: 张三, 年龄: 30, 城市: 北京"if {[regexp {姓名:\s*(.+?),\s*年龄:\s*(\d+),\s*城市:\s*(.+)} $str match name age city]} {    puts "姓名: $name"    puts "年龄: $age"    puts "城市: $city"} else {    puts "无法提取信息"}



来源:TodayCAEer
二次开发UM控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-11
最近编辑:1月前
TodayCAEer
本科 签名征集中
获赞 17粉丝 26文章 235课程 0
点赞
收藏
作者推荐

HyperWork 2024 -二次开发-插件集成Extension XML(2/5)

摘自帮助文档自定义extension.xml文件的格式。XMLOverview扩展管理器允许通过.xml、脚本和资源将额外的插件特性加载到应用程序中。扩展名.xml结构由一个顶部文件组成,该文件通过扩展文件夹的相对路径引用所有必需的资源。extension.xmlExampleextension.xml文件示例如下:<sectionname="Extension"><entryname="name"value="ExtensionCaptureRibbonDemo"/><entryname="resources"value="images"/><entryname="minProductVersion"value="2022.2"/><entryname="version"value="1.0"/><entryname="autoLoad"value="true"/><entryname="author"value="Altair"/><entryname="description"value="HyperWorksextensiondemoshowingyouhowtoincorporateyourcustomcontentintheapplicationribbon.

Containscaptuesimagefeaturesforthreedifferentclients:HyperMesh,HyperViewandHyperGraph."/><entryname="supportedClient"value="HyperWorksDesktop"/><entryname="tclscript"value="global-init.tcl"/><sectionname="profile"value="HyperMesh"><entryname="ribbonxml"value="hm/hm-ribbon.xml"/></section><sectionname="profile"value="HyperView"><entryname="ribbonxml"value="hv/hv-ribbon.xml"/></section><sectionname="profile"value="HyperGraph"><entryname="ribbonxml"value="hg/hg-ribbon.xml"/></section></section>Tagssection扩展的基础容器。AttributesnameChildrenentryentry通过名称值对指定add的每个单独引用项。Attributesname,valueChildrenNoneOptionsprofile可以使用AltairHyperWorks产品,如HyperMesh、HyperView、HyperGraph等。使用像OptiStruct、Radioss、LineChart和BarChart这样的子配置文件,只有在使用该子配置文件时才能访问扩展入口点。ProductProfileHyperMeshOptiStructRadiossFekoHyperFormHyperXtrudeHyperMoldHyperWeldAbaqusADVCANSYSEXODUSLS-DYNANastranPAM-CRASHPermasHyperViewNAHyperGraphLineChartBarChartComplexChartPolarChartVectorChartRadarChart3DChartMotionViewNAMediaViewNATextViewNATableViewNAHyperMeshCFDNAname扩展的唯一标识符displayName扩展管理器中显示的名称version扩展管理器中显示的版本script加载时调用的Python脚本的相对路径resources包含图像和其他资源文件的文件夹的相对路径默认为资源文件夹autoLoad如果布尔值设置为true,则在注册时自动加载扩展,默认为falseunloadable如果布尔值设置为true,则使扩展不可加载,默认为falseworkflowhelpworkflowhelp.xml文件的相对路径minProductVersion加载扩展所需的最低版本version扩展的版本removable禁用Remove按钮supportedClient支持扩展的应用程序(HyperWorksDesktop,Inspire等)documentationhelp.html文件的相对路径,该文件将使用描述链接加载contexts包含contexts脚本的文件夹的相对路径默认为contexts文件夹tclscript加载时调用的.tcl脚本的相对路径ribbonxml功能区.xml文件的相对路径toolbars包含toolbar.xml文件的目录的相对路径icon扩展管理器中显示的图标ExampleXML<sectionname="Extension"><entryname="name"value="PostprocessinginHV,HG,MV"/><entryname="displayName"value="PostprocessinginHV,HG,MV"/><entryname="resources"value="images"/><entryname="workflowhelp"value="contexts/workflowhelp.xml"/><entryname="minProductVersion"value="HWXVersion2022"/><entryname="version"value="2.0"/><entryname="supportedClient"value="HyperWorksDesktop"/><entryname="script"value="pyscript.py"/><entryname="documentation"value="documentation/index.html"/><entryname="removable"value="false"/><entryname="icon"value="romAI-60.png"/><entryname="tclscript"value="global-init.tcl"/><entryname="autoLoad"value="true"/><entryname="unloadable"value="false"/><sectionname="profile"value="HyperMesh"><entryname="ribbonxml"value="hm/hm-ribbon.xml"/><entryname="tclscript"value="hm/hm-init.tcl"/><entryname="toolbars"value="hm/toolbars"/><entryname="contexts"value="hm/contexts"/></section><sectionname="profile"value="HyperView"><entryname="ribbonxml"value="hv/hv-ribbon.xml"/><entryname="tclscript"value="hv/hv-init.tcl"/></section>来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈