- Tcl教程
- Tcl - 首页
- Tcl - 概述
- Tcl - 环境设置
- Tcl - 特殊变量
- Tcl - 基本语法
- Tcl - 命令
- Tcl - 数据类型
- Tcl - 变量
- Tcl - 运营商
- Tcl - 决策
- Tcl - 循环
- Tcl - 数组
- Tcl - 字符串
- Tcl - 列表
- Tcl - 字典
- Tcl - 程序
- Tcl - 套餐
- Tcl - 命名空间
- Tcl - 文件 I/O
- Tcl - 错误处理
- Tcl - 内置函数
- Tcl - 正则表达式
- TK 教程
- Tk - 概述
- Tk-环境
- Tk - 特殊变量
- Tk - 小部件概述
- Tk - 基本小部件
- Tk - 布局小部件
- Tk - 选择小部件
- Tk - 画布小部件
- Tk - 大型小部件
- Tk-字体
- Tk - 图像
- Tk - 活动
- Tk-Windows 管理器
- Tk - 几何管理器
- Tcl/Tk 有用资源
- Tcl/Tk - 快速指南
- Tcl/Tk - 有用的资源
- Tcl/Tk - 讨论
Tcl - 正则表达式
“regexp”命令用于匹配 Tcl 中的正则表达式。正则表达式是包含搜索模式的字符序列。它由多个规则组成,下表解释了这些规则及其相应的用途。
先生。 | 规则及说明 |
---|---|
1 | X 完全符合。 |
2 | [阿兹] az 中的任意小写字母。 |
3 | 。 任何角色。 |
4 | ^ 起始字符串应该匹配。 |
5 | $ 结束字符串应该匹配。 |
6 | \^ 用于匹配特殊字符 ^ 的反斜杠序列。类似地,您可以用于其他字符。 |
7 | () 将上述序列添加到括号内以形成正则表达式。 |
8 | X* 应匹配 0 次或多次出现的前面的 x。 |
9 | x+ 应匹配前面的 x 出现 1 次或多次。 |
10 | [阿兹]? 应匹配前面的 x 出现 0 次或 1 次。 |
11 | {数字} 精确匹配先前正则表达式中出现的数字。包含 0-9 的数字。 |
12 | {数字,} 匹配先前正则表达式中出现的 3 个或更多数字。包含 0-9 的数字。 |
13 | {数字1,数字2} 出现次数与先前正则表达式的数字 1 和数字 2 出现次数之间的范围相匹配。 |
句法
正则表达式的语法如下 -
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn
这里,regex 是命令。稍后我们将看到可选开关。模式就是前面提到的规则。搜索字符串是执行正则表达式的实际字符串。完全匹配是保存匹配正则表达式结果的任何变量。Submatch1 到 SubMatchn 是可选的 subMatch 变量,用于保存子匹配模式的结果。
在深入研究复杂的例子之前,让我们先看一些简单的例子。带有任意字母的字符串的简单示例。当正则表达式遇到任何其他字符时,搜索将停止并返回。
#!/usr/bin/tclsh regexp {([A-Za-z]*)} "Tcl Tutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
执行上述代码时,会产生以下结果 -
Full Match: Tcl Sub Match1: Tcl
多种模式
以下示例显示如何搜索多个模式。这是任何字母表后跟任何字符后跟任何字母表的示例模式。
#!/usr/bin/tclsh regexp {([A-Za-z]*).([A-Za-z]*)} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
执行上述代码时,会产生以下结果 -
Full Match: Tcl Tutorial Sub Match1: Tcl Sub Match2: Tutorial
上述代码的修改版本显示子模式可以包含多个模式,如下所示 -
#!/usr/bin/tclsh regexp {([A-Za-z]*.([A-Za-z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
执行上述代码时,会产生以下结果 -
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
Regex 命令的开关
Tcl 中可用的开关列表是:
nocase - 用于忽略大小写。
索引- 存储匹配子模式的位置而不是匹配字符。
line - 新行敏感匹配。忽略换行符之后的字符。
开始索引- 设置搜索模式开始的偏移量。
标记开关的结束
在上面的示例中,我故意对所有字母使用 [AZ, az],您可以轻松地使用 -nocase 而不是如下所示 -
#!/usr/bin/tclsh regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
执行上述代码时,会产生以下结果 -
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
使用开关的另一个示例如下所示 -
#!/usr/bin/tclsh regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b" regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
执行上述代码时,会产生以下结果 -
Full Match: Tcl Sub Match1: Tcl Full Match: Tutorial Sub Match1: Tutorial