Tcl正則命令之regexp

2021-09-24 20:55:37 字數 1800 閱讀 3916

regexp ?switches? exp str ?matchvar? ?submatchvar submatchvar ...?
判斷正規表示式exp是否匹配部分或全部字串str,如果匹配返回1,否則返回0。如果在str後面指定了其他引數,則視為變數的名稱,其中儲存的是str中匹配exp的部分。matchvar儲存的是所有匹配exp的字串。

switches為開關,是以「-」開頭的字串,regexp支援的開頭有:

開關說明

-about

返回乙個包含正規表示式資訊的列表,而不是嘗試匹配正規表示式。列表的第乙個元素是子表示式數量。第二個元素是描述正規表示式的各種屬性的屬性名稱列表。此開關主要用於除錯。

-expanded

啟用正規表示式擴充套件語法,表示式中的空白符和注釋將被忽略。與嵌入式選項(?x)相同。

-indices

更改子matchvar、submatchvar中儲存的內容。不再儲存str中匹配的字元,而是儲存乙個列表其中包含匹配的字串在string中的起始和結束位置。

-line

開啟行敏感匹配。此選項相當於同時指定-linestop和-lineanchor選項。與嵌入式選項(?n)相同。

-linestop

與嵌入式選項(?p)相同。

-lineanchor

與嵌入式選項(?w)相同。

-nocase

忽略大小寫,

-all

使正規表示式在字串中盡可能多地匹配,返回找到的匹配項的總數。如果指定了matchvar、submatchvar,那麼只會儲存最後匹配的資訊。

-inline

將命令結果以列表形式返回,而不是替換到matchvar、submatchvar變數中,所以當使用此開關時不能指定matchvar、submatchvar變數。如果與-all一起使用,則會將每次的匹配結果都追加到列表中。

-start index

指定匹配正規表示式的字串str的起始位置。index的取值與string index中索引取值方式相同。使用此開關時,「^」不再匹配行開頭,\a則匹配index開始的str子串的開頭。

--標記開關結束。後面的引數將被視為exp,即使它以-開頭。

set multiline a\nab\nc

regexp a.*b $multiline matched

puts $matched

regexp -expanded "a .*b" $multiline matched

puts $matched

regexp a.* $multiline matched

puts $matched

regexp -line a.* $multiline matched

puts $matched

regexp -line -nocase a.* $multiline matched

puts $matched

regexp -line -all -nocase a.* $multiline matched

puts $matched

regexp -line -all -nocase a.*b$ $multiline matched

puts $matched

regexp -start 1 -line -nocase -inline a.* $multiline

regexp -- -a.* $multiline

regexp -inline -- -a.* -abcde

Tcl陣列命令之array

array option arrayname arg1 arg2 argn?操作名為arrayname的陣列,option選項決定了執行什麼操作。option支援以下選項 array set arrayname list向陣列中新增乙個或多個元素,list由偶數個元素組成。奇數個元素被視為陣列的索引...

JS正則 RegExp概述

ecmascript通過regexp型別支援正規表示式。格式 let expression pattern flagspattern 模式 flags 標記 說明 所有的元字元在模式中必須轉義 包括 元字元在正規表示式中都有一種或多種特殊功能,所以要匹配上面這些字元本身,就必須使用反斜槓來轉義。示例...

Tcl列表排序命令之lsort

lsort options?list對列表中的元素進行排序,返回排序後的新列表。預設情況下以ascii的順序遞增排序。options支援以下選項 選項說明 ascii 字串比較。dictionary 字典比較。與 asii相同,除了兩點 1.除非字母為排序的關鍵點,否則忽略大小寫。如abc會排在ab...