Tcl所述“正则表达式”命令用于匹配正则表达式中使用。正则表达式是一个字符序列,它包含一个搜索模式。它由多个规则如下面的表格解释了这些规则和相应的使用。
语法
正则表达式的语法如下。
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn |
这里,正则表达式是命令。我们将看到有关可选开关后。模式是如前面提到的规则。搜索字符串是其进行的正则表达式的实际字符串。精确匹配任何可变持有的正则表达式匹配结果的结果。
Submatch1到SubMatchn是持有次级匹配模式的结果可选的子变量。
在深入复杂的之前,让我们来看看一些简单的例子。一个字符串中的任何字母。当任何字符遇到正则表达式的搜索时将被停止,并返回。
#!/usr/bin/tclsh
regexp {([A-Z,a-z]*)} "Tcl Tutorial" a b puts "Full Match: $a" puts "Sub Match1: $b" |
当执行上面的代码,产生以下结果:
Full Match: Tcl Sub Match1: Tcl |
多种模式
下面的例子演示了如何搜索多个模式。这是任意字符后跟任何字母的任何字的母模式例子。
#!/usr/bin/tclsh
regexp {([A-Z,a-z]*).([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 Sub Match2: Tutorial |
上面的代码修改版本,以表明一个子模式可以包含多个模式如下所示。
#!/usr/bin/tclsh
regexp {([A-Z,a-z]*.([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 |
选择正则表达式的命令
选择在Tcl中提供的列表是,
-nocase : 用于忽略大小写。
-indices : 匹配的子模式,而不是匹配的字符存储的位置。
-line : 新行敏感匹配。换行后忽略字符。
-start index : 搜索模式开始设置偏移
-- : 标志着开关的结束
在上面的例子中,特意用[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 |
|
|