鍍金池/ 教程/ 物聯(lián)網(wǎng)/ TCL正則表達式
TCL內(nèi)置函數(shù)
TCL變量
TCL嵌套循環(huán)
TCL決策
TCL循環(huán)
Tcl if...else語句
Tcl教程
TCL字符串
TCL邏輯運算符
TCL Switch語句
TCL列表
TCL運算符優(yōu)先級
TCL數(shù)據(jù)類型
TCL環(huán)境設(shè)置
TCL正則表達式
TCL命名空間
TCL運算符
TCL特殊變量
TCL數(shù)組
TCL算術(shù)運算符
Tcl For循環(huán)
TCL文件I/O
TCL關(guān)系運算符
TCL if語句
TCL命令
TCL基本語法
TCL三元運算符
TCL continue語句
TCL嵌套if語句
TCL字典
TCL break語句
TCL包
TCL 嵌套switch語句
TCL while循環(huán)
TCL位運算符
TCL過程
TCL錯誤處理

TCL正則表達式

Tcl所述“正則表達式”命令用于匹配正則表達式中使用。正則表達式是一個字符序列,它包含一個搜索模式。它由多個規(guī)則如下面的表格解釋了這些規(guī)則和相應(yīng)的使用。

SN 規(guī)則 描述
1 x 精確匹配。
2 [a-z] 從任何小寫字母 a-z.
3 . 任何字符。
4 ^ 開始字符串匹配
5 $ 結(jié)尾字符串匹配
6 \^ 間隙序列匹配特殊字符^。同樣,可以使用其它字符。
7 () 添加上述序列內(nèi)括號使正則表達式。
8 x* 應(yīng)該匹配0或多次出現(xiàn)在x前。
9 x+ 應(yīng)該匹配1次或多次出現(xiàn)在x的前面。
10 [a-z]? 應(yīng)該匹配0或1在發(fā)生x之前。
11 {digit} 完全匹配位數(shù)的正則表達式之前出現(xiàn)。數(shù)字包含0-9。
12 {digit,} 匹配前面的正則表達式的3個或更多的數(shù)字出現(xiàn)。數(shù)字包含0-9。
13 {digit1,digit2} 發(fā)生匹配digit1和digit2 在正則表達式以前的事件之間的范圍內(nèi)。

語法

正則表達式的語法如下。

regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn

這里,正則表達式是命令。我們將看到有關(guān)可選開關(guān)后。模式是如前面提到的規(guī)則。搜索字符串是其進行的正則表達式的實際字符串。精確匹配任何可變持有的正則表達式匹配結(jié)果的結(jié)果。 Submatch1到SubMatchn是持有次級匹配模式的結(jié)果可選的子變量。

在深入復(fù)雜的之前,讓我們來看看一些簡單的例子。一個字符串中的任何字母。當任何字符遇到正則表達式的搜索時將被停止,并返回。

#!/usr/bin/tclsh

regexp {([A-Z,a-z]*)} "Tcl Tutorial" a b 
puts "Full Match: $a"
puts "Sub Match1: $b"

當執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

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"

當執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

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"

當執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial

選擇正則表達式的命令

選擇在Tcl中提供的列表是,

  • -nocase : 用于忽略大小寫。

  • -indices : 匹配的子模式,而不是匹配的字符存儲的位置。

  • -line : 新行敏感匹配。換行后忽略字符。

  • -start index : 搜索模式開始設(shè)置偏移

  • -- : 標志著開關(guān)的結(jié)束

在上面的例子中,特意用[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"

當執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

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"

當執(zhí)行上面的代碼,產(chǎn)生以下結(jié)果:

Full Match: Tcl 
Sub Match1: Tcl 
Full Match: Tutorial
Sub Match1: Tutorial

上一篇:TCL包下一篇:TCL特殊變量